From 4360260ac6ff24fa2f0e993d1a6f14ecb05cc23a Mon Sep 17 00:00:00 2001 From: xurror Date: Sat, 9 May 2020 16:37:29 +0100 Subject: [PATCH] FINERACT-897 make fineract compatible with both mysql5.5 and mysql v8 --- ...fospltaform-tenants-first-time-install.sql | 58 +- .../0001-mifos-platform-shared-tenants.sql | 18 +- .../bare-bones-demo/bk_bare_bones_demo.sql | 732 ++--- .../bk_mifostenant_default.sql | 732 ++--- .../ceda/bk_ceda_trial.sql | 728 ++--- .../ceda/bk_core_with_custom_and_coa.sql | 728 ++--- .../ceda/ceda-schema-customisations.sql | 58 +- .../default-demo/bk_mifostenant-default.sql | 732 ++--- .../extra-datatables-and-code-values.sql | 26 +- .../gk-maarg/0001b-gk-datatables.sql | 4 +- .../latam-demo/bk_latam.sql | 740 ++--- .../latam-demo/datatables-on-latam-demo.sql | 26 +- .../0001a-mifosplatform-core-ddl-latest.sql | 548 ++-- .../0004-mifosx-core-reports-utf8.sql | 4 +- .../service/TenantDatabaseUpgradeService.java | 2 +- .../ReadWriteNonCoreDataServiceImpl.java | 12 +- ...mulitplesof_to_account_transfers_table.sql | 2 +- .../V102__client_attendance_tables.sql | 14 +- .../V103__cluster_support_for_batch_jobs.sql | 12 +- ..._track_loan_transaction_against_office.sql | 4 +- .../core_db/V107__datatable_code_mappings.sql | 4 +- .../V108__client_has_transfer_office.sql | 2 +- ...0__interest-posting-fields-for-savings.sql | 4 +- .../core_db/V110__group_center_close.sql | 2 +- .../core_db/V112__mixreport_sql_support.sql | 22 +- ...ack_savings_transaction_against_office.sql | 4 +- .../V115__permissions_for_cache_api.sql | 6 +- .../V117__loan_charge_from_savings.sql | 6 +- ..._move_withdrawal_annual_fee_to_charges.sql | 28 +- .../core_db/V118__savings_charge.sql | 32 +- .../core_db/V119__add_template_table.sql | 28 +- .../core_db/V11__add-payment-details.sql | 8 +- ...122__recurring_fee_support_for_savings.sql | 8 +- .../V123__remove_payment_mode_for_savings.sql | 2 +- ...al_database_structure_for_sms_outbound.sql | 12 +- .../V128__added_loan_installment_charge.sql | 12 +- .../V129__client_and_group_timeline.sql | 12 +- ...2__add_external_id_to_couple_of_tables.sql | 4 +- .../core_db/V130__calendar-history-table.sql | 16 +- ..._holiday-status-column-and-permissions.sql | 2 +- .../core_db/V132__borrower_cycle_changes.sql | 14 +- ...ding_payment_detail_with_journal_entry.sql | 4 +- ...136_1__update_script_strechy_parameter.sql | 2 +- ...137__added_is_active_column_in_m_staff.sql | 2 +- ...r_is_active_updated_to_true_in_m_staff.sql | 2 +- ...yment_detail_id_in_ac_gl_journal_entry.sql | 2 +- .../V140__added_loan_charge_status.sql | 2 +- .../V144__spelling_mistake_corrections.sql | 2 +- ...orce_password_reset_in_c_configuration.sql | 4 +- .../core_db/V146__tranche_loans.sql | 18 +- ...147__tranche_loans_column_name_changes.sql | 4 +- .../core_db/V148__overdraft_changes.sql | 6 +- .../core_db/V14__rename_status_id_to_enum.sql | 4 +- .../core_db/V150__basic_savings_report.sql | 2 +- ..._add_default_savings_account_to_client.sql | 2 +- .../V152__added_grace_for_over_due.sql | 4 +- .../V157__overdue_charge_improvements.sql | 12 +- .../V160__standing_instruction_changes.sql | 78 +- .../core_db/V163__added_npa_for_loans.sql | 4 +- .../V164__fd_and_rd_deposit_tables.sql | 136 +- ...xed_deposit_interest_to_linked_account.sql | 2 +- ...added_mandatory_savings_and_rd_changes.sql | 18 +- ...V172__accounting_changes_for_transfers.sql | 10 +- .../sql/migrations/core_db/V173__ppi.sql | 22 +- .../V175__added_incentive_interest_rates.sql | 28 +- ...updates_to_financial_activity_accounts.sql | 2 +- .../V17__update_stretchy_reporting_ddl.sql | 22 +- .../V181__standing_instruction_logging.sql | 4 +- ...in_required_balance_to_savings_product.sql | 4 +- ...n_required_balance_for_savings_product.sql | 4 +- ...__m_loan_interest_recalculation_tables.sql | 24 +- ...stComponent_for_interest_recalculation.sql | 2 +- ..._moved_rest_frequency_to_product_level.sql | 8 +- ...d_loan_running_balance_of_transactions.sql | 4 +- ...an_rescheduling_tables_and_permissions.sql | 38 +- ...ed_extra_columns_from_schedule_history.sql | 2 +- .../V1__mifosplatform-core-ddl-latest.sql | 548 ++-- .../sql/migrations/core_db/V201__webhooks.sql | 36 +- .../V202__savings_officer_history_table.sql | 12 +- ...arge_and_interest_waiver_with_accruals.sql | 2 +- .../V207__min_max_clients_per_group.sql | 4 +- ...__track_manually_adjusted_transactions.sql | 2 +- ..._between_disbursal_and_first_repayment.sql | 2 +- ..._add_NthDay_and_DayOfWeek_columns_loan.sql | 4 +- ...d_DayOfWeek_columns_should_be_nullable.sql | 4 +- ...er_table_add_create_SI_at_disbursement.sql | 2 +- .../V215__guarantee_on_hold_fund_changes.sql | 8 +- ...nt_substatus_and_codevalue_description.sql | 2 +- ...datetime_for_loan_savings_transactions.sql | 4 +- ...antor_on_hold_fund_changes_for_account.sql | 30 +- ...21__activation-permissions-for-clients.sql | 2 +- .../V220__account_number_preferences.sql | 8 +- ...221__add_version_for_m_savings_account.sql | 2 +- ..._on_hold_fund_changes_for_transactions.sql | 2 +- .../V223__add_version_for_m_loan_account.sql | 2 +- ...V224__client_lifecycle_adding_statuses.sql | 12 +- .../core_db/V228__entity_to_entity_access.sql | 8 +- .../core_db/V229__teller_cash_management.sql | 24 +- ...-group-for-consistency-add-permissions.sql | 4 +- ...le_status_and_correspoding_permissions.sql | 2 +- .../V235__add_ugd_template_id_m_hook.sql | 2 +- ...ging_config_for_interest_recalculation.sql | 4 +- .../core_db/V241__fixed_emi_changes.sql | 2 +- .../V242__entitytoentitymappingrelation.sql | 18 +- .../V244__staff_assignment_history_table.sql | 10 +- .../V250__password_validation_policy.sql | 6 +- .../core_db/V251__paymentType_table.sql | 10 +- ...__product_loan_configurable_attributes.sql | 4 +- ...V255__pre_close_interest_period_config.sql | 2 +- .../core_db/V257__staff_image_association.sql | 2 +- .../V258__interest_compounding_changes.sql | 8 +- .../core_db/V259__alter_working_days.sql | 2 +- ...ports_for_status_and_activation_change.sql | 2 +- .../V265__modify_external_service_schema.sql | 8 +- .../migrations/core_db/V266__client_fees.sql | 44 +- ...support-for-withdrawal-fees-on-savings.sql | 4 +- .../V271__accounting_for_client_charges.sql | 4 +- ...V272__loan_tranche_disbursement_charge.sql | 14 +- .../core_db/V273__oauth_changes.sql | 10 +- ...nsaction_to_repayment_schedule_mapping.sql | 6 +- .../V277__Loan_Product_Provisioning.sql | 54 +- ...278__LoanTransactionProcessingStrategy.sql | 2 +- .../core_db/V279__floating_rates.sql | 24 +- ...27__add-loan-type-column-to-loan-table.sql | 2 +- .../V280__spm_framework_initial_tables.sql | 46 +- .../core_db/V282__CustomerSelfService.sql | 8 +- .../core_db/V283__Variable_Installments.sql | 10 +- .../core_db/V284__update_codevalue.sql | 2 +- ...6__partial_period_interest_calcualtion.sql | 4 +- .../core_db/V287__alter_spm_scorecard.sql | 14 +- .../core_db/V289__client_non_person.sql | 10 +- ...ccounting-abstractions-and-autoposting.sql | 30 +- ...nterest_rate_chart_support_for_amounts.sql | 10 +- .../core_db/V298__savings_interest_tax.sql | 46 +- .../core_db/V299__share_products.sql | 132 +- ...add-support-for-annual-fees-on-savings.sql | 8 +- ...recurring_moratorium_principal_periods.sql | 4 +- .../V302__add_status_to_client_identifier.sql | 4 +- .../V303__Savings_Account_Dormancy.sql | 10 +- ...mer_self_service_third_party_transfers.sql | 4 +- ...q_and_insertion_script_for_accrual_job.sql | 12 +- .../core_db/V307__add_share_notes.sql | 2 +- .../V309__add_loan_write_off_reason_code.sql | 2 +- .../core_db/V311__foreclosure_details.sql | 2 +- .../V312__add_is_mandatory_to_code_value.sql | 2 +- .../V313__multi_rescheduling_script.sql | 14 +- .../V316__address_module_tables_metadat.sql | 26 +- .../V317__report_mailing_job_module.sql | 10 +- .../migrations/core_db/V318__topuploan.sql | 6 +- .../V322_1__scheduled_email_campaign.sql | 32 +- .../migrations/core_db/V322__sms_campaign.sql | 22 +- ...spm_replace_dead_fk_with_exisiting_one.sql | 14 +- .../core_db/V324__datatable_checks.sql | 13 +- .../V325__add_is_staff_client_data.sql | 2 +- .../V327__creditbureau_configuration.sql | 38 +- .../V328__family_members_sql_support.sql | 18 +- .../V329__sms_messages_without_campaign.sql | 2 +- ..._savings_account_transaction_releaseId.sql | 2 +- .../core_db/V331__holiday_schema_changes.sql | 2 +- ...V332__self_service_registration_schema.sql | 6 +- .../migrations/core_db/V333__adhocquery.sql | 6 +- .../V334__notification_module_tables.sql | 16 +- .../V336__sms_campaign_notification.sql | 10 +- .../core_db/V337__equal_amortization.sql | 4 +- .../V338__two_factor_authentication.sql | 6 +- .../core_db/V341__m_import_document.sql | 16 +- .../core_db/V342__topic_module_table.sql | 12 +- ...ing_recalculate_interest_for_loans_job.sql | 6 +- .../V345__reports_for_self_service_user.sql | 2 +- .../core_db/V348__m_trial_balance_table.sql | 4 +- .../core_db/V349__client_transfer_details.sql | 12 +- .../core_db/V351__pocket_mapping.sql | 12 +- .../migrations/core_db/V352__interop_init.sql | 8 +- .../sql/migrations/core_db/V355__rates.sql | 20 +- .../core_db/V356__GSIM_migration_script.sql | 14 +- .../core_db/V357__GLIM_migration_script.sql | 12 +- ...__add_tag_id_column_for_acc_gl_account.sql | 2 +- .../core_db/V39__payment-channels-updates.sql | 4 +- ...t_value_for_id_for_acc_accounting_rule.sql | 2 +- .../core_db/V43__accounting-for-savings.sql | 4 +- .../V45__create_acc_rule_tags_table.sql | 8 +- .../V47__staff-hierarchy-link-to-users.sql | 4 +- .../core_db/V48__adding-S3-Support.sql | 14 +- ...track-loan-charge-payment-transactions.sql | 8 +- .../core_db/V4__mifosx-core-reports-utf8.sql | 4 +- ...50__add-grace-settings-to-loan-product.sql | 12 +- ...an_support_cols_to_acc_accounting_rule.sql | 4 +- ...V54__charge-to-income-account-mappings.sql | 2 +- ...nd_credit_accounts_acc_accounting_rule.sql | 4 +- .../V58__create-holiday-tables_changed.sql | 6 +- ...add_group_roles_schema_and_permissions.sql | 10 +- ...ate-savings-product-and-account-tables.sql | 4 +- .../V62__add_staff_id_to_m_client_changed.sql | 2 +- ...sbursement_with_meeting_column_to_loan.sql | 2 +- .../V66__client_close_functionality.sql | 2 +- .../core_db/V67__loans_in_advance_table.sql | 4 +- .../V72__add_m_loan_counter_changes.sql | 14 +- ...led_to_and_processed_column_to_holiday.sql | 2 +- .../core_db/V79__schedule_jobs_tables.sql | 16 +- .../core_db/V81__savings_related_changes.sql | 22 +- ...jobs_tables_updates_for_running_status.sql | 2 +- .../core_db/V83__non-working-days-table.sql | 6 +- .../V85__product_mix_related_changes.sql | 8 +- ...ed_update_constrain_for_scheduler_jobs.sql | 2 +- .../core_db/V89__added_scheduler_group.sql | 2 +- .../V94__added_savings_accont type.sql | 2 +- .../V96__savings_accounts_transfers_table.sql | 32 +- ..._added_currency_roundof_for_multipleof.sql | 12 +- ..._constraint_column_to_loan_loanproduct.sql | 16 +- .../V1__mifos-platform-shared-tenants.sql | 18 +- .../V2__externalize-connection-properties.sql | 26 +- .../list_db/V3__deadlock-retry-properties.sql | 4 +- ...ns_and_tenants_server_connection_table.sql | 46 +- .../migrations/sample_data/barebones_db.sql | 2426 ++++++++--------- .../sample_data/interop_sample_data.sql | 12 +- .../sample_data/load_sample_data.sql | 2416 ++++++++-------- .../sample_data/tn03_interop_sample_data.sql | 8 +- .../sample_data/tn04_interop_sample_data.sql | 8 +- 218 files changed, 6395 insertions(+), 6398 deletions(-) diff --git a/fineract-db/mifospltaform-tenants-first-time-install.sql b/fineract-db/mifospltaform-tenants-first-time-install.sql index 87ab311ba..c97c507c2 100644 --- a/fineract-db/mifospltaform-tenants-first-time-install.sql +++ b/fineract-db/mifospltaform-tenants-first-time-install.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,24 +40,24 @@ DROP TABLE IF EXISTS `schema_version`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `schema_version` ( - `version_rank` int(11) NOT NULL, - `installed_rank` int(11) NOT NULL, + `version_rank` INT NOT NULL, + `installed_rank` INT NOT NULL, `version` varchar(50) NOT NULL, `description` varchar(200) NOT NULL, `type` varchar(20) NOT NULL, `script` varchar(1000) NOT NULL, - `checksum` int(11) DEFAULT NULL, + `checksum` INT DEFAULT NULL, `installed_by` varchar(100) NOT NULL, `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `execution_time` int(11) NOT NULL, - `success` tinyint(1) NOT NULL, + `execution_time` INT NOT NULL, + `success` tinyint NOT NULL, PRIMARY KEY (`version`), KEY `schema_version_vr_idx` (`version_rank`), KEY `schema_version_ir_idx` (`installed_rank`), KEY `schema_version_s_idx` (`success`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -77,14 +77,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `tenants`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `tenants` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `identifier` varchar(100) NOT NULL, `name` varchar(100) NOT NULL, `schema_name` varchar(100) NOT NULL, `timezone_id` varchar(100) NOT NULL, - `country_id` int(11) DEFAULT NULL, + `country_id` INT DEFAULT NULL, `joined_date` date DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, @@ -92,22 +92,22 @@ CREATE TABLE `tenants` ( `schema_server_port` varchar(10) NOT NULL DEFAULT '3306', `schema_username` varchar(100) NOT NULL DEFAULT 'root', `schema_password` varchar(100) NOT NULL DEFAULT 'mysql', - `auto_update` tinyint(1) NOT NULL DEFAULT '1', - `pool_initial_size` int(5) DEFAULT 5, - `pool_validation_interval` int(11) DEFAULT 30000, - `pool_remove_abandoned` tinyint(1) DEFAULT 1, - `pool_remove_abandoned_timeout` int(5) DEFAULT 60, - `pool_log_abandoned` tinyint(1) DEFAULT 1, - `pool_abandon_when_percentage_full` int(5) DEFAULT 50, - `pool_test_on_borrow` tinyint(1) DEFAULT 1, - `pool_max_active` int(5) DEFAULT 40, - `pool_min_idle` int(5) DEFAULT 20, - `pool_max_idle` int(5) DEFAULT 10, - `pool_suspect_timeout` int(5) DEFAULT 60, - `pool_time_between_eviction_runs_millis` int(11) DEFAULT 34000, - `pool_min_evictable_idle_time_millis` int(11) DEFAULT 60000, + `auto_update` tinyint NOT NULL DEFAULT '1', + `pool_initial_size` INT DEFAULT 5, + `pool_validation_interval` INT DEFAULT 30000, + `pool_remove_abandoned` tinyint DEFAULT 1, + `pool_remove_abandoned_timeout` INT DEFAULT 60, + `pool_log_abandoned` tinyint DEFAULT 1, + `pool_abandon_when_percentage_full` INT DEFAULT 50, + `pool_test_on_borrow` tinyint DEFAULT 1, + `pool_max_active` INT DEFAULT 40, + `pool_min_idle` INT DEFAULT 20, + `pool_max_idle` INT DEFAULT 10, + `pool_suspect_timeout` INT DEFAULT 60, + `pool_time_between_eviction_runs_millis` INT DEFAULT 34000, + `pool_min_evictable_idle_time_millis` INT DEFAULT 60000, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -127,14 +127,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `timezones`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `timezones` ( - `id` int(3) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `country_code` varchar(2) NOT NULL, `timezonename` varchar(100) NOT NULL, `comments` varchar(150) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-db/multi-tenant-demo-backups/0001-mifos-platform-shared-tenants.sql b/fineract-db/multi-tenant-demo-backups/0001-mifos-platform-shared-tenants.sql index e84a413f2..816078441 100644 --- a/fineract-db/multi-tenant-demo-backups/0001-mifos-platform-shared-tenants.sql +++ b/fineract-db/multi-tenant-demo-backups/0001-mifos-platform-shared-tenants.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,14 +40,14 @@ DROP TABLE IF EXISTS `tenants`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `tenants` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `identifier` varchar(100) NOT NULL, `name` varchar(100) NOT NULL, `schema_name` varchar(100) NOT NULL, `timezone_id` varchar(100) NOT NULL, - `country_id` int(11) DEFAULT NULL, + `country_id` INT DEFAULT NULL, `joined_date` date DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, @@ -55,9 +55,9 @@ CREATE TABLE `tenants` ( `schema_server_port` varchar(10) NOT NULL DEFAULT '3306', `schema_username` varchar(100) NOT NULL DEFAULT 'root', `schema_password` varchar(100) NOT NULL DEFAULT 'mysql', - `auto_update` tinyint(1) NOT NULL DEFAULT '1', + `auto_update` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -76,14 +76,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `timezones`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `timezones` ( - `id` int(3) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `country_code` varchar(2) NOT NULL, `timezonename` varchar(100) NOT NULL, `comments` varchar(150) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-db/multi-tenant-demo-backups/bare-bones-demo/bk_bare_bones_demo.sql b/fineract-db/multi-tenant-demo-backups/bare-bones-demo/bk_bare_bones_demo.sql index c3259afa6..4e810f636 100644 --- a/fineract-db/multi-tenant-demo-backups/bare-bones-demo/bk_bare_bones_demo.sql +++ b/fineract-db/multi-tenant-demo-backups/bare-bones-demo/bk_bare_bones_demo.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,22 +40,22 @@ DROP TABLE IF EXISTS `acc_gl_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), KEY `FK_ACC_0000000001` (`parent_id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -73,14 +73,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_closure`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -92,7 +92,7 @@ CREATE TABLE `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -110,23 +110,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_journal_entry`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `transaction_id` varchar(50) NOT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', - `manual_entry` tinyint(1) NOT NULL DEFAULT '0', + `reversed` tinyint NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), @@ -140,7 +140,7 @@ CREATE TABLE `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -158,15 +158,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_product_mapping`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -184,13 +184,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `c_configuration`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -209,49 +209,49 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `client additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `client additional data` ( - `client_id` bigint(20) NOT NULL, - `Gender_cd` int(11) NOT NULL, + `client_id` BIGINT NOT NULL, + `Gender_cd` INT NOT NULL, `Date of Birth` date NOT NULL, `Home address` text NOT NULL, `Telephone number` varchar(20) NOT NULL, `Telephone number (2nd)` varchar(20) NOT NULL, `Email address` varchar(50) NOT NULL, - `EducationLevel_cd` int(11) NOT NULL, - `MaritalStatus_cd` int(11) NOT NULL, - `Number of children` int(11) NOT NULL, + `EducationLevel_cd` INT NOT NULL, + `MaritalStatus_cd` INT NOT NULL, + `Number of children` INT NOT NULL, `Citizenship` varchar(50) NOT NULL, - `PovertyStatus_cd` int(11) NOT NULL, - `YesNo_cd_Employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL, + `PovertyStatus_cd` INT NOT NULL, + `YesNo_cd_Employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of employment` INT DEFAULT NULL, `Employer name` varchar(50) DEFAULT NULL, - `Number of years` int(11) DEFAULT NULL, + `Number of years` INT DEFAULT NULL, `Monthly salary` decimal(19,6) DEFAULT NULL, - `YesNo_cd_Self employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL, + `YesNo_cd_Self employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of self-employment` INT DEFAULT NULL, `Business address` text, - `Number of employees` int(11) DEFAULT NULL, + `Number of employees` INT DEFAULT NULL, `Monthly salaries paid` decimal(19,6) DEFAULT NULL, `Monthly net income of business activity` decimal(19,6) DEFAULT NULL, `Monthly rent` decimal(19,6) DEFAULT NULL, `Other income generating activities` varchar(100) DEFAULT NULL, - `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL, - `YesNo_cd_Loans with other institutions` int(11) NOT NULL, + `YesNo_cd_Bookkeeping` INT DEFAULT NULL, + `YesNo_cd_Loans with other institutions` INT NOT NULL, `From whom` varchar(100) DEFAULT NULL, `Amount` decimal(19,6) DEFAULT NULL, `Interest rate pa` decimal(19,6) DEFAULT NULL, - `Number of people depending on overal income` int(11) NOT NULL, - `YesNo_cd_Bank account` int(11) NOT NULL, - `YesNo_cd_Business plan provided` int(11) NOT NULL, - `YesNo_cd_Access to internet` int(11) DEFAULT NULL, + `Number of people depending on overal income` INT NOT NULL, + `YesNo_cd_Bank account` INT NOT NULL, + `YesNo_cd_Business plan provided` INT NOT NULL, + `YesNo_cd_Access to internet` INT DEFAULT NULL, `Introduced by` varchar(100) DEFAULT NULL, `Known to introducer since` varchar(100) NOT NULL, `Last visited by` varchar(100) DEFAULT NULL, `Last visited on` date NOT NULL, PRIMARY KEY (`client_id`), CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -269,19 +269,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_client_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_client_details` ( - `client_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`client_id`), CONSTRAINT `FK_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -299,19 +299,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_family_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_family_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, `Name` varchar(40) DEFAULT NULL, `Date of Birth` date DEFAULT NULL, - `Points Score` int(11) DEFAULT NULL, - `Education_cd_Highest` int(11) DEFAULT NULL, + `Points Score` INT DEFAULT NULL, + `Education_cd_Highest` INT DEFAULT NULL, `Other Notes` text, PRIMARY KEY (`id`), KEY `FK_Extra Family Details Data_1` (`client_id`), CONSTRAINT `FK_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -329,19 +329,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_loan_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_loan_details` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -359,19 +359,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `impact measurement`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `impact measurement` ( - `loan_id` bigint(20) NOT NULL, - `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `YesNo_cd_RepaidOnSchedule` INT NOT NULL, `ReasonNotRepaidOnSchedule` text, `How was Loan Amount Invested` text NOT NULL, `Additional Income Generated` decimal(19,6) NOT NULL, `Additional Income Used For` text NOT NULL, - `YesNo_cd_NewJobsCreated` int(11) NOT NULL, - `Number of Jobs Created` bigint(20) DEFAULT NULL, + `YesNo_cd_NewJobsCreated` INT NOT NULL, + `Number of Jobs Created` BIGINT DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -389,20 +389,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `loan additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `loan additional data` ( - `loan_id` bigint(20) NOT NULL, - `PurposeOfLoan_cd` int(11) NOT NULL, - `CollateralType_cd` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `PurposeOfLoan_cd` INT NOT NULL, + `CollateralType_cd` INT NOT NULL, `Collateral notes` text NOT NULL, - `YesNo_cd_Guarantor` int(11) NOT NULL, + `YesNo_cd_Guarantor` INT NOT NULL, `Guarantor name` varchar(100) DEFAULT NULL, `Guarantor relation` varchar(100) DEFAULT NULL, `Guarantor address` varchar(100) DEFAULT NULL, `Guarantor telephone number` varchar(20) DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -420,11 +420,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -439,7 +439,7 @@ CREATE TABLE `m_appuser` ( UNIQUE KEY `username_org` (`username`), KEY `FKB3D587CE0DD567A` (`office_id`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -458,16 +458,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -486,27 +486,27 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -524,16 +524,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar_instance`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -551,21 +551,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -583,11 +583,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `office_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, @@ -596,13 +596,13 @@ CREATE TABLE `m_client` ( `display_name` varchar(100) NOT NULL, `image_key` varchar(500) DEFAULT NULL, `joined_date` date DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), KEY `FKCE00CAB3E0DD567A` (`office_id`), CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -620,15 +620,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client_identifier`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -638,7 +638,7 @@ CREATE TABLE `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -656,14 +656,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` tinyint(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -682,17 +682,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -711,17 +711,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -740,19 +740,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(50) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -770,15 +770,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_fund`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -796,17 +796,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `parent_id` bigint(20) DEFAULT NULL, - `level_Id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, + `level_Id` INT NOT NULL, `hierarchy` varchar(100) DEFAULT NULL, `name` varchar(100) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`level_Id`), UNIQUE KEY `external_id` (`external_id`,`level_Id`), @@ -818,7 +818,7 @@ CREATE TABLE `m_group` ( CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`), CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -836,15 +836,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -862,18 +862,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_level`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_level` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `parent_id` int(11) DEFAULT NULL, - `super_parent` tinyint(1) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `parent_id` INT DEFAULT NULL, + `super_parent` tinyint NOT NULL, `level_name` varchar(100) NOT NULL, - `recursable` tinyint(1) NOT NULL, - `can_have_clients` tinyint(1) NOT NULL, + `recursable` tinyint NOT NULL, + `can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -892,12 +892,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_guarantor`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_guarantor` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_enum` smallint(5) NOT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `dob` date DEFAULT NULL, @@ -913,7 +913,7 @@ CREATE TABLE `m_guarantor` ( PRIMARY KEY (`id`), KEY `FK_m_guarantor_m_loan` (`loan_id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -931,46 +931,46 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -999,12 +999,12 @@ CREATE TABLE `m_loan` ( `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -1034,7 +1034,7 @@ CREATE TABLE `m_loan` ( CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1052,9 +1052,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_arrears_aging`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -1063,7 +1063,7 @@ CREATE TABLE `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1081,15 +1081,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -1097,14 +1097,14 @@ CREATE TABLE `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1122,18 +1122,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_collateral`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_collateral_m_loan` (`loan_id`), KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1151,23 +1151,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_officer_assignment_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1185,13 +1185,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_repayment_schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -1207,15 +1207,15 @@ CREATE TABLE `m_loan_repayment_schedule` ( `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL, `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `interest_waived_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1233,12 +1233,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -1248,7 +1248,7 @@ CREATE TABLE `m_loan_transaction` ( PRIMARY KEY (`id`), KEY `FKCFCEA42640BE0710` (`loan_id`), CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1266,19 +1266,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_note`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -1292,7 +1292,7 @@ CREATE TABLE `m_note` ( CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1310,10 +1310,10 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -1323,7 +1323,7 @@ CREATE TABLE `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1342,13 +1342,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -1357,7 +1357,7 @@ CREATE TABLE `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1375,16 +1375,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_organisation_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1403,17 +1403,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=287 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=287 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1432,24 +1432,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_portfolio_command_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, + `processing_result_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), KEY `FK_m_checker_m_appuser` (`checker_id`), @@ -1464,7 +1464,7 @@ CREATE TABLE `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1482,34 +1482,34 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), KEY `FKA6A8A7D77240145` (`fund_id`), KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1527,15 +1527,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1553,14 +1553,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1579,16 +1579,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1607,24 +1607,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', `activation_date` date DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, `lockedin_until_date_derived` date DEFAULT NULL, `total_deposits_derived` decimal(19,6) DEFAULT NULL, `total_withdrawals_derived` decimal(19,6) DEFAULT NULL, @@ -1639,7 +1639,7 @@ CREATE TABLE `m_savings_account` ( CONSTRAINT `FKSA00000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1657,18 +1657,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `is_reversed` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1686,21 +1686,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_product`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1718,11 +1718,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_staff`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(100) NOT NULL, @@ -1730,7 +1730,7 @@ CREATE TABLE `m_staff` ( UNIQUE KEY `display_name` (`display_name`), KEY `FK_m_staff_m_office` (`office_id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1748,16 +1748,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `r_enum_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1776,18 +1776,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1806,11 +1806,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `rpt_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1828,9 +1828,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_parameter` ( - `parameter_id` int(11) NOT NULL AUTO_INCREMENT, + `parameter_id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -1841,12 +1841,12 @@ CREATE TABLE `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_parameter_id` int(11) DEFAULT NULL, + `parent_parameter_id` INT DEFAULT NULL, PRIMARY KEY (`parameter_id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), KEY `fk_stretchy_parameter_0001_idx` (`parent_parameter_id`), CONSTRAINT `fk_stretchy_parameter_0001` FOREIGN KEY (`parent_parameter_id`) REFERENCES `stretchy_parameter` (`parameter_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1855,7 +1855,7 @@ CREATE TABLE `stretchy_parameter` ( LOCK TABLES `stretchy_parameter` WRITE; /*!40000 ALTER TABLE `stretchy_parameter` DISABLE KEYS */; -INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'${currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); +INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'$\{currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); /*!40000 ALTER TABLE `stretchy_parameter` ENABLE KEYS */; UNLOCK TABLES; @@ -1865,20 +1865,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report` ( - `report_id` int(11) NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`report_id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1887,7 +1887,7 @@ CREATE TABLE `stretchy_report` ( LOCK TABLES `stretchy_report` WRITE; /*!40000 ALTER TABLE `stretchy_report` DISABLE KEYS */; -INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); +INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); /*!40000 ALTER TABLE `stretchy_report` ENABLE KEYS */; UNLOCK TABLES; @@ -1897,14 +1897,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report_parameter` ( - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`report_id`,`parameter_id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1923,12 +1923,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `x_registered_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-db/multi-tenant-demo-backups/bk_mifostenant_default.sql b/fineract-db/multi-tenant-demo-backups/bk_mifostenant_default.sql index c1f13f251..61da348c6 100644 --- a/fineract-db/multi-tenant-demo-backups/bk_mifostenant_default.sql +++ b/fineract-db/multi-tenant-demo-backups/bk_mifostenant_default.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,22 +40,22 @@ DROP TABLE IF EXISTS `acc_gl_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), KEY `FK_ACC_0000000001` (`parent_id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -74,14 +74,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_closure`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -93,7 +93,7 @@ CREATE TABLE `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -111,23 +111,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_journal_entry`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `transaction_id` varchar(50) NOT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', - `manual_entry` tinyint(1) NOT NULL DEFAULT '0', + `reversed` tinyint NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), @@ -141,7 +141,7 @@ CREATE TABLE `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -159,15 +159,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_product_mapping`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -185,13 +185,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `c_configuration`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -210,49 +210,49 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `client additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `client additional data` ( - `client_id` bigint(20) NOT NULL, - `Gender_cd` int(11) NOT NULL, + `client_id` BIGINT NOT NULL, + `Gender_cd` INT NOT NULL, `Date of Birth` date NOT NULL, `Home address` text NOT NULL, `Telephone number` varchar(20) NOT NULL, `Telephone number (2nd)` varchar(20) NOT NULL, `Email address` varchar(50) NOT NULL, - `EducationLevel_cd` int(11) NOT NULL, - `MaritalStatus_cd` int(11) NOT NULL, - `Number of children` int(11) NOT NULL, + `EducationLevel_cd` INT NOT NULL, + `MaritalStatus_cd` INT NOT NULL, + `Number of children` INT NOT NULL, `Citizenship` varchar(50) NOT NULL, - `PovertyStatus_cd` int(11) NOT NULL, - `YesNo_cd_Employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL, + `PovertyStatus_cd` INT NOT NULL, + `YesNo_cd_Employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of employment` INT DEFAULT NULL, `Employer name` varchar(50) DEFAULT NULL, - `Number of years` int(11) DEFAULT NULL, + `Number of years` INT DEFAULT NULL, `Monthly salary` decimal(19,6) DEFAULT NULL, - `YesNo_cd_Self employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL, + `YesNo_cd_Self employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of self-employment` INT DEFAULT NULL, `Business address` text, - `Number of employees` int(11) DEFAULT NULL, + `Number of employees` INT DEFAULT NULL, `Monthly salaries paid` decimal(19,6) DEFAULT NULL, `Monthly net income of business activity` decimal(19,6) DEFAULT NULL, `Monthly rent` decimal(19,6) DEFAULT NULL, `Other income generating activities` varchar(100) DEFAULT NULL, - `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL, - `YesNo_cd_Loans with other institutions` int(11) NOT NULL, + `YesNo_cd_Bookkeeping` INT DEFAULT NULL, + `YesNo_cd_Loans with other institutions` INT NOT NULL, `From whom` varchar(100) DEFAULT NULL, `Amount` decimal(19,6) DEFAULT NULL, `Interest rate pa` decimal(19,6) DEFAULT NULL, - `Number of people depending on overal income` int(11) NOT NULL, - `YesNo_cd_Bank account` int(11) NOT NULL, - `YesNo_cd_Business plan provided` int(11) NOT NULL, - `YesNo_cd_Access to internet` int(11) DEFAULT NULL, + `Number of people depending on overal income` INT NOT NULL, + `YesNo_cd_Bank account` INT NOT NULL, + `YesNo_cd_Business plan provided` INT NOT NULL, + `YesNo_cd_Access to internet` INT DEFAULT NULL, `Introduced by` varchar(100) DEFAULT NULL, `Known to introducer since` varchar(100) NOT NULL, `Last visited by` varchar(100) DEFAULT NULL, `Last visited on` date NOT NULL, PRIMARY KEY (`client_id`), CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -270,19 +270,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_client_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_client_details` ( - `client_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`client_id`), CONSTRAINT `FK_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -300,19 +300,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_family_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_family_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, `Name` varchar(40) DEFAULT NULL, `Date of Birth` date DEFAULT NULL, - `Points Score` int(11) DEFAULT NULL, - `Education_cd_Highest` int(11) DEFAULT NULL, + `Points Score` INT DEFAULT NULL, + `Education_cd_Highest` INT DEFAULT NULL, `Other Notes` text, PRIMARY KEY (`id`), KEY `FK_Extra Family Details Data_1` (`client_id`), CONSTRAINT `FK_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -330,19 +330,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_loan_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_loan_details` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -360,19 +360,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `impact measurement`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `impact measurement` ( - `loan_id` bigint(20) NOT NULL, - `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `YesNo_cd_RepaidOnSchedule` INT NOT NULL, `ReasonNotRepaidOnSchedule` text, `How was Loan Amount Invested` text NOT NULL, `Additional Income Generated` decimal(19,6) NOT NULL, `Additional Income Used For` text NOT NULL, - `YesNo_cd_NewJobsCreated` int(11) NOT NULL, - `Number of Jobs Created` bigint(20) DEFAULT NULL, + `YesNo_cd_NewJobsCreated` INT NOT NULL, + `Number of Jobs Created` BIGINT DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -390,20 +390,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `loan additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `loan additional data` ( - `loan_id` bigint(20) NOT NULL, - `PurposeOfLoan_cd` int(11) NOT NULL, - `CollateralType_cd` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `PurposeOfLoan_cd` INT NOT NULL, + `CollateralType_cd` INT NOT NULL, `Collateral notes` text NOT NULL, - `YesNo_cd_Guarantor` int(11) NOT NULL, + `YesNo_cd_Guarantor` INT NOT NULL, `Guarantor name` varchar(100) DEFAULT NULL, `Guarantor relation` varchar(100) DEFAULT NULL, `Guarantor address` varchar(100) DEFAULT NULL, `Guarantor telephone number` varchar(20) DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -421,11 +421,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -440,7 +440,7 @@ CREATE TABLE `m_appuser` ( UNIQUE KEY `username_org` (`username`), KEY `FKB3D587CE0DD567A` (`office_id`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -459,16 +459,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -487,27 +487,27 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -525,16 +525,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar_instance`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -552,21 +552,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -584,11 +584,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `office_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, @@ -597,13 +597,13 @@ CREATE TABLE `m_client` ( `display_name` varchar(100) NOT NULL, `image_key` varchar(500) DEFAULT NULL, `joined_date` date DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), KEY `FKCE00CAB3E0DD567A` (`office_id`), CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -621,15 +621,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client_identifier`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -639,7 +639,7 @@ CREATE TABLE `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -657,14 +657,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` tinyint(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -683,17 +683,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -712,17 +712,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -741,19 +741,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(50) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -771,15 +771,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_fund`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -797,17 +797,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `parent_id` bigint(20) DEFAULT NULL, - `level_Id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, + `level_Id` INT NOT NULL, `hierarchy` varchar(100) DEFAULT NULL, `name` varchar(100) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`level_Id`), UNIQUE KEY `external_id` (`external_id`,`level_Id`), @@ -819,7 +819,7 @@ CREATE TABLE `m_group` ( CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`), CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -837,15 +837,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -863,18 +863,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_level`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_level` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `parent_id` int(11) DEFAULT NULL, - `super_parent` tinyint(1) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `parent_id` INT DEFAULT NULL, + `super_parent` tinyint NOT NULL, `level_name` varchar(100) NOT NULL, - `recursable` tinyint(1) NOT NULL, - `can_have_clients` tinyint(1) NOT NULL, + `recursable` tinyint NOT NULL, + `can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -893,12 +893,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_guarantor`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_guarantor` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_enum` smallint(5) NOT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `dob` date DEFAULT NULL, @@ -914,7 +914,7 @@ CREATE TABLE `m_guarantor` ( PRIMARY KEY (`id`), KEY `FK_m_guarantor_m_loan` (`loan_id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -932,46 +932,46 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -1000,12 +1000,12 @@ CREATE TABLE `m_loan` ( `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -1035,7 +1035,7 @@ CREATE TABLE `m_loan` ( CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1053,9 +1053,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_arrears_aging`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -1064,7 +1064,7 @@ CREATE TABLE `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1082,15 +1082,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -1098,14 +1098,14 @@ CREATE TABLE `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1123,18 +1123,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_collateral`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_collateral_m_loan` (`loan_id`), KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1152,23 +1152,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_officer_assignment_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1186,13 +1186,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_repayment_schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -1208,15 +1208,15 @@ CREATE TABLE `m_loan_repayment_schedule` ( `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL, `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `interest_waived_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1234,12 +1234,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -1249,7 +1249,7 @@ CREATE TABLE `m_loan_transaction` ( PRIMARY KEY (`id`), KEY `FKCFCEA42640BE0710` (`loan_id`), CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1267,19 +1267,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_note`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -1293,7 +1293,7 @@ CREATE TABLE `m_note` ( CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1311,10 +1311,10 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -1324,7 +1324,7 @@ CREATE TABLE `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1343,13 +1343,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -1358,7 +1358,7 @@ CREATE TABLE `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1376,16 +1376,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_organisation_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1404,17 +1404,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=299 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=299 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1433,24 +1433,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_portfolio_command_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, + `processing_result_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), KEY `FK_m_checker_m_appuser` (`checker_id`), @@ -1465,7 +1465,7 @@ CREATE TABLE `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1483,34 +1483,34 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), KEY `FKA6A8A7D77240145` (`fund_id`), KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1528,15 +1528,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1554,14 +1554,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1580,16 +1580,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1608,24 +1608,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', `activation_date` date DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, `lockedin_until_date_derived` date DEFAULT NULL, `total_deposits_derived` decimal(19,6) DEFAULT NULL, `total_withdrawals_derived` decimal(19,6) DEFAULT NULL, @@ -1640,7 +1640,7 @@ CREATE TABLE `m_savings_account` ( CONSTRAINT `FKSA00000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1658,18 +1658,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `is_reversed` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1687,21 +1687,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_product`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1719,11 +1719,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_staff`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(100) NOT NULL, @@ -1731,7 +1731,7 @@ CREATE TABLE `m_staff` ( UNIQUE KEY `display_name` (`display_name`), KEY `FK_m_staff_m_office` (`office_id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1749,16 +1749,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `r_enum_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1777,18 +1777,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1807,11 +1807,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `rpt_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1829,9 +1829,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_parameter` ( - `parameter_id` int(11) NOT NULL AUTO_INCREMENT, + `parameter_id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -1842,12 +1842,12 @@ CREATE TABLE `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_parameter_id` int(11) DEFAULT NULL, + `parent_parameter_id` INT DEFAULT NULL, PRIMARY KEY (`parameter_id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), KEY `fk_stretchy_parameter_0001_idx` (`parent_parameter_id`), CONSTRAINT `fk_stretchy_parameter_0001` FOREIGN KEY (`parent_parameter_id`) REFERENCES `stretchy_parameter` (`parameter_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1856,7 +1856,7 @@ CREATE TABLE `stretchy_parameter` ( LOCK TABLES `stretchy_parameter` WRITE; /*!40000 ALTER TABLE `stretchy_parameter` DISABLE KEYS */; -INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'${currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); +INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'$\{currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); /*!40000 ALTER TABLE `stretchy_parameter` ENABLE KEYS */; UNLOCK TABLES; @@ -1866,20 +1866,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report` ( - `report_id` int(11) NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`report_id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1888,7 +1888,7 @@ CREATE TABLE `stretchy_report` ( LOCK TABLES `stretchy_report` WRITE; /*!40000 ALTER TABLE `stretchy_report` DISABLE KEYS */; -INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); +INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); /*!40000 ALTER TABLE `stretchy_report` ENABLE KEYS */; UNLOCK TABLES; @@ -1898,14 +1898,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report_parameter` ( - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`report_id`,`parameter_id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1924,12 +1924,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `x_registered_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-db/multi-tenant-demo-backups/ceda/bk_ceda_trial.sql b/fineract-db/multi-tenant-demo-backups/ceda/bk_ceda_trial.sql index 609ff4191..766a63645 100644 --- a/fineract-db/multi-tenant-demo-backups/ceda/bk_ceda_trial.sql +++ b/fineract-db/multi-tenant-demo-backups/ceda/bk_ceda_trial.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,22 +40,22 @@ DROP TABLE IF EXISTS `acc_gl_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), KEY `FK_ACC_0000000001` (`parent_id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -74,14 +74,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_closure`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -93,7 +93,7 @@ CREATE TABLE `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -111,23 +111,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_journal_entry`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `transaction_id` varchar(50) NOT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', - `manual_entry` tinyint(1) NOT NULL DEFAULT '0', + `reversed` tinyint NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), @@ -141,7 +141,7 @@ CREATE TABLE `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -159,15 +159,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_product_mapping`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -186,13 +186,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `c_configuration`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -211,49 +211,49 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `client additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `client additional data` ( - `client_id` bigint(20) NOT NULL, - `Gender_cd` int(11) NOT NULL, + `client_id` BIGINT NOT NULL, + `Gender_cd` INT NOT NULL, `Date of Birth` date NOT NULL, `Home address` text NOT NULL, `Telephone number` varchar(20) NOT NULL, `Telephone number (2nd)` varchar(20) NOT NULL, `Email address` varchar(50) NOT NULL, - `EducationLevel_cd` int(11) NOT NULL, - `MaritalStatus_cd` int(11) NOT NULL, - `Number of children` int(11) NOT NULL, + `EducationLevel_cd` INT NOT NULL, + `MaritalStatus_cd` INT NOT NULL, + `Number of children` INT NOT NULL, `Citizenship` varchar(50) NOT NULL, - `PovertyStatus_cd` int(11) NOT NULL, - `YesNo_cd_Employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL, + `PovertyStatus_cd` INT NOT NULL, + `YesNo_cd_Employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of employment` INT DEFAULT NULL, `Employer name` varchar(50) DEFAULT NULL, - `Number of years` int(11) DEFAULT NULL, + `Number of years` INT DEFAULT NULL, `Monthly salary` decimal(19,6) DEFAULT NULL, - `YesNo_cd_Self employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL, + `YesNo_cd_Self employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of self-employment` INT DEFAULT NULL, `Business address` text, - `Number of employees` int(11) DEFAULT NULL, + `Number of employees` INT DEFAULT NULL, `Monthly salaries paid` decimal(19,6) DEFAULT NULL, `Monthly net income of business activity` decimal(19,6) DEFAULT NULL, `Monthly rent` decimal(19,6) DEFAULT NULL, `Other income generating activities` varchar(100) DEFAULT NULL, - `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL, - `YesNo_cd_Loans with other institutions` int(11) NOT NULL, + `YesNo_cd_Bookkeeping` INT DEFAULT NULL, + `YesNo_cd_Loans with other institutions` INT NOT NULL, `From whom` varchar(100) DEFAULT NULL, `Amount` decimal(19,6) DEFAULT NULL, `Interest rate pa` decimal(19,6) DEFAULT NULL, - `Number of people depending on overal income` int(11) NOT NULL, - `YesNo_cd_Bank account` int(11) NOT NULL, - `YesNo_cd_Business plan provided` int(11) NOT NULL, - `YesNo_cd_Access to internet` int(11) DEFAULT NULL, + `Number of people depending on overal income` INT NOT NULL, + `YesNo_cd_Bank account` INT NOT NULL, + `YesNo_cd_Business plan provided` INT NOT NULL, + `YesNo_cd_Access to internet` INT DEFAULT NULL, `Introduced by` varchar(100) DEFAULT NULL, `Known to introducer since` varchar(100) NOT NULL, `Last visited by` varchar(100) DEFAULT NULL, `Last visited on` date NOT NULL, PRIMARY KEY (`client_id`), CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -271,19 +271,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `impact measurement`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `impact measurement` ( - `loan_id` bigint(20) NOT NULL, - `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `YesNo_cd_RepaidOnSchedule` INT NOT NULL, `ReasonNotRepaidOnSchedule` text, `How was Loan Amount Invested` text NOT NULL, `Additional Income Generated` decimal(19,6) NOT NULL, `Additional Income Used For` text NOT NULL, - `YesNo_cd_NewJobsCreated` int(11) NOT NULL, - `Number of Jobs Created` bigint(20) DEFAULT NULL, + `YesNo_cd_NewJobsCreated` INT NOT NULL, + `Number of Jobs Created` BIGINT DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -301,20 +301,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `loan additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `loan additional data` ( - `loan_id` bigint(20) NOT NULL, - `PurposeOfLoan_cd` int(11) NOT NULL, - `CollateralType_cd` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `PurposeOfLoan_cd` INT NOT NULL, + `CollateralType_cd` INT NOT NULL, `Collateral notes` text NOT NULL, - `YesNo_cd_Guarantor` int(11) NOT NULL, + `YesNo_cd_Guarantor` INT NOT NULL, `Guarantor name` varchar(100) DEFAULT NULL, `Guarantor relation` varchar(100) DEFAULT NULL, `Guarantor address` varchar(100) DEFAULT NULL, `Guarantor telephone number` varchar(20) DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -332,11 +332,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -351,7 +351,7 @@ CREATE TABLE `m_appuser` ( UNIQUE KEY `username_org` (`username`), KEY `FKB3D587CE0DD567A` (`office_id`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -370,16 +370,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -398,27 +398,27 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -436,16 +436,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar_instance`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -463,21 +463,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -496,11 +496,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `office_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, @@ -509,13 +509,13 @@ CREATE TABLE `m_client` ( `display_name` varchar(100) NOT NULL, `image_key` varchar(500) DEFAULT NULL, `joined_date` date DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), KEY `FKCE00CAB3E0DD567A` (`office_id`), CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -534,15 +534,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client_identifier`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -552,7 +552,7 @@ CREATE TABLE `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -570,14 +570,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` tinyint(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -596,17 +596,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -625,17 +625,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -654,19 +654,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(50) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -684,15 +684,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_fund`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -710,17 +710,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `parent_id` bigint(20) DEFAULT NULL, - `level_Id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, + `level_Id` INT NOT NULL, `hierarchy` varchar(100) DEFAULT NULL, `name` varchar(100) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`level_Id`), UNIQUE KEY `external_id` (`external_id`,`level_Id`), @@ -732,7 +732,7 @@ CREATE TABLE `m_group` ( CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`), CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -750,15 +750,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -776,18 +776,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_level`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_level` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `parent_id` int(11) DEFAULT NULL, - `super_parent` tinyint(1) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `parent_id` INT DEFAULT NULL, + `super_parent` tinyint NOT NULL, `level_name` varchar(100) NOT NULL, - `recursable` tinyint(1) NOT NULL, - `can_have_clients` tinyint(1) NOT NULL, + `recursable` tinyint NOT NULL, + `can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -806,13 +806,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_guarantor`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_guarantor` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `client_reln_cv_id` int(11) DEFAULT NULL, - `type_enum` smallint(5) NOT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `client_reln_cv_id` INT DEFAULT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `dob` date DEFAULT NULL, @@ -830,7 +830,7 @@ CREATE TABLE `m_guarantor` ( KEY `FK_m_guarantor_m_code_value` (`client_reln_cv_id`), CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -848,48 +848,48 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `min_principal_amount` decimal(19,6) NOT NULL, `max_principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -918,12 +918,12 @@ CREATE TABLE `m_loan` ( `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -953,7 +953,7 @@ CREATE TABLE `m_loan` ( CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -972,9 +972,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_arrears_aging`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -983,7 +983,7 @@ CREATE TABLE `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1001,15 +1001,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -1017,14 +1017,14 @@ CREATE TABLE `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1043,11 +1043,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_collateral`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `value` decimal(19,6) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), @@ -1055,7 +1055,7 @@ CREATE TABLE `m_loan_collateral` ( KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1074,23 +1074,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_officer_assignment_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1109,13 +1109,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_repayment_schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -1131,15 +1131,15 @@ CREATE TABLE `m_loan_repayment_schedule` ( `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL, `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `interest_waived_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1158,12 +1158,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -1173,7 +1173,7 @@ CREATE TABLE `m_loan_transaction` ( PRIMARY KEY (`id`), KEY `FKCFCEA42640BE0710` (`loan_id`), CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1191,19 +1191,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_note`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -1217,7 +1217,7 @@ CREATE TABLE `m_note` ( CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1235,10 +1235,10 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -1248,7 +1248,7 @@ CREATE TABLE `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1267,13 +1267,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -1282,7 +1282,7 @@ CREATE TABLE `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1300,16 +1300,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_organisation_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1328,17 +1328,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=308 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=308 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1357,25 +1357,25 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_portfolio_command_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, + `processing_result_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), KEY `FK_m_checker_m_appuser` (`checker_id`), @@ -1390,7 +1390,7 @@ CREATE TABLE `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1409,36 +1409,36 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `min_principal_amount` decimal(19,6) NOT NULL, `max_principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), KEY `FKA6A8A7D77240145` (`fund_id`), KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1457,15 +1457,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1483,14 +1483,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1509,16 +1509,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1537,25 +1537,25 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', `activation_date` date DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_annual_interest_rate` decimal(19,6) NOT NULL, - `interest_compounding_period_enum` smallint(5) NOT NULL, - `interest_calculation_type_enum` smallint(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` smallint(5) NOT NULL, + `interest_compounding_period_enum` SMALLINT NOT NULL, + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, `lockedin_until_date_derived` date DEFAULT NULL, `total_deposits_derived` decimal(19,6) DEFAULT NULL, `total_withdrawals_derived` decimal(19,6) DEFAULT NULL, @@ -1571,7 +1571,7 @@ CREATE TABLE `m_savings_account` ( CONSTRAINT `FKSA00000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1589,22 +1589,22 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `is_reversed` tinyint NOT NULL, `running_balance_derived` decimal(19,6) DEFAULT NULL, - `balance_number_of_days_derived` int(11) DEFAULT NULL, + `balance_number_of_days_derived` INT DEFAULT NULL, `balance_end_date_derived` date DEFAULT NULL, `cumulative_balance_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1622,23 +1622,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_product`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_annual_interest_rate` decimal(19,6) NOT NULL, - `interest_compounding_period_enum` smallint(5) NOT NULL, - `interest_calculation_type_enum` smallint(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` smallint(5) NOT NULL, + `interest_compounding_period_enum` SMALLINT NOT NULL, + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1656,11 +1656,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_staff`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(100) NOT NULL, @@ -1668,7 +1668,7 @@ CREATE TABLE `m_staff` ( UNIQUE KEY `display_name` (`display_name`), KEY `FK_m_staff_m_office` (`office_id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1687,16 +1687,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `r_enum_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1715,18 +1715,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1745,11 +1745,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `rpt_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1767,24 +1767,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `schema_version`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `schema_version` ( - `version_rank` int(11) NOT NULL, - `installed_rank` int(11) NOT NULL, + `version_rank` INT NOT NULL, + `installed_rank` INT NOT NULL, `version` varchar(50) NOT NULL, `description` varchar(200) NOT NULL, `type` varchar(20) NOT NULL, `script` varchar(1000) NOT NULL, - `checksum` int(11) DEFAULT NULL, + `checksum` INT DEFAULT NULL, `installed_by` varchar(100) NOT NULL, `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `execution_time` int(11) NOT NULL, - `success` tinyint(1) NOT NULL, + `execution_time` INT NOT NULL, + `success` tinyint NOT NULL, PRIMARY KEY (`version`), KEY `schema_version_vr_idx` (`version_rank`), KEY `schema_version_ir_idx` (`installed_rank`), KEY `schema_version_s_idx` (`success`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1803,9 +1803,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_parameter` ( - `parameter_id` int(11) NOT NULL AUTO_INCREMENT, + `parameter_id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -1816,12 +1816,12 @@ CREATE TABLE `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_parameter_id` int(11) DEFAULT NULL, + `parent_parameter_id` INT DEFAULT NULL, PRIMARY KEY (`parameter_id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), KEY `fk_stretchy_parameter_0001_idx` (`parent_parameter_id`), CONSTRAINT `fk_stretchy_parameter_0001` FOREIGN KEY (`parent_parameter_id`) REFERENCES `stretchy_parameter` (`parameter_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1830,7 +1830,7 @@ CREATE TABLE `stretchy_parameter` ( LOCK TABLES `stretchy_parameter` WRITE; /*!40000 ALTER TABLE `stretchy_parameter` DISABLE KEYS */; -INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'${currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); +INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'$\{currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); /*!40000 ALTER TABLE `stretchy_parameter` ENABLE KEYS */; UNLOCK TABLES; @@ -1840,20 +1840,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report` ( - `report_id` int(11) NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`report_id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1862,7 +1862,7 @@ CREATE TABLE `stretchy_report` ( LOCK TABLES `stretchy_report` WRITE; /*!40000 ALTER TABLE `stretchy_report` DISABLE KEYS */; -INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); +INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); /*!40000 ALTER TABLE `stretchy_report` ENABLE KEYS */; UNLOCK TABLES; @@ -1872,14 +1872,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report_parameter` ( - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`report_id`,`parameter_id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1898,12 +1898,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `x_registered_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-db/multi-tenant-demo-backups/ceda/bk_core_with_custom_and_coa.sql b/fineract-db/multi-tenant-demo-backups/ceda/bk_core_with_custom_and_coa.sql index ea4f9231d..0628d7668 100644 --- a/fineract-db/multi-tenant-demo-backups/ceda/bk_core_with_custom_and_coa.sql +++ b/fineract-db/multi-tenant-demo-backups/ceda/bk_core_with_custom_and_coa.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,22 +40,22 @@ DROP TABLE IF EXISTS `acc_gl_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), KEY `FK_ACC_0000000001` (`parent_id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -74,14 +74,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_closure`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -93,7 +93,7 @@ CREATE TABLE `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -111,23 +111,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_journal_entry`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `transaction_id` varchar(50) NOT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', - `manual_entry` tinyint(1) NOT NULL DEFAULT '0', + `reversed` tinyint NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), @@ -141,7 +141,7 @@ CREATE TABLE `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -159,15 +159,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_product_mapping`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -186,13 +186,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `c_configuration`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -211,49 +211,49 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `client additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `client additional data` ( - `client_id` bigint(20) NOT NULL, - `Gender_cd` int(11) NOT NULL, + `client_id` BIGINT NOT NULL, + `Gender_cd` INT NOT NULL, `Date of Birth` date NOT NULL, `Home address` text NOT NULL, `Telephone number` varchar(20) NOT NULL, `Telephone number (2nd)` varchar(20) NOT NULL, `Email address` varchar(50) NOT NULL, - `EducationLevel_cd` int(11) NOT NULL, - `MaritalStatus_cd` int(11) NOT NULL, - `Number of children` int(11) NOT NULL, + `EducationLevel_cd` INT NOT NULL, + `MaritalStatus_cd` INT NOT NULL, + `Number of children` INT NOT NULL, `Citizenship` varchar(50) NOT NULL, - `PovertyStatus_cd` int(11) NOT NULL, - `YesNo_cd_Employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL, + `PovertyStatus_cd` INT NOT NULL, + `YesNo_cd_Employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of employment` INT DEFAULT NULL, `Employer name` varchar(50) DEFAULT NULL, - `Number of years` int(11) DEFAULT NULL, + `Number of years` INT DEFAULT NULL, `Monthly salary` decimal(19,6) DEFAULT NULL, - `YesNo_cd_Self employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL, + `YesNo_cd_Self employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of self-employment` INT DEFAULT NULL, `Business address` text, - `Number of employees` int(11) DEFAULT NULL, + `Number of employees` INT DEFAULT NULL, `Monthly salaries paid` decimal(19,6) DEFAULT NULL, `Monthly net income of business activity` decimal(19,6) DEFAULT NULL, `Monthly rent` decimal(19,6) DEFAULT NULL, `Other income generating activities` varchar(100) DEFAULT NULL, - `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL, - `YesNo_cd_Loans with other institutions` int(11) NOT NULL, + `YesNo_cd_Bookkeeping` INT DEFAULT NULL, + `YesNo_cd_Loans with other institutions` INT NOT NULL, `From whom` varchar(100) DEFAULT NULL, `Amount` decimal(19,6) DEFAULT NULL, `Interest rate pa` decimal(19,6) DEFAULT NULL, - `Number of people depending on overal income` int(11) NOT NULL, - `YesNo_cd_Bank account` int(11) NOT NULL, - `YesNo_cd_Business plan provided` int(11) NOT NULL, - `YesNo_cd_Access to internet` int(11) DEFAULT NULL, + `Number of people depending on overal income` INT NOT NULL, + `YesNo_cd_Bank account` INT NOT NULL, + `YesNo_cd_Business plan provided` INT NOT NULL, + `YesNo_cd_Access to internet` INT DEFAULT NULL, `Introduced by` varchar(100) DEFAULT NULL, `Known to introducer since` varchar(100) NOT NULL, `Last visited by` varchar(100) DEFAULT NULL, `Last visited on` date NOT NULL, PRIMARY KEY (`client_id`), CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -271,19 +271,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `impact measurement`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `impact measurement` ( - `loan_id` bigint(20) NOT NULL, - `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `YesNo_cd_RepaidOnSchedule` INT NOT NULL, `ReasonNotRepaidOnSchedule` text, `How was Loan Amount Invested` text NOT NULL, `Additional Income Generated` decimal(19,6) NOT NULL, `Additional Income Used For` text NOT NULL, - `YesNo_cd_NewJobsCreated` int(11) NOT NULL, - `Number of Jobs Created` bigint(20) DEFAULT NULL, + `YesNo_cd_NewJobsCreated` INT NOT NULL, + `Number of Jobs Created` BIGINT DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -301,20 +301,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `loan additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `loan additional data` ( - `loan_id` bigint(20) NOT NULL, - `PurposeOfLoan_cd` int(11) NOT NULL, - `CollateralType_cd` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `PurposeOfLoan_cd` INT NOT NULL, + `CollateralType_cd` INT NOT NULL, `Collateral notes` text NOT NULL, - `YesNo_cd_Guarantor` int(11) NOT NULL, + `YesNo_cd_Guarantor` INT NOT NULL, `Guarantor name` varchar(100) DEFAULT NULL, `Guarantor relation` varchar(100) DEFAULT NULL, `Guarantor address` varchar(100) DEFAULT NULL, `Guarantor telephone number` varchar(20) DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -332,11 +332,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -351,7 +351,7 @@ CREATE TABLE `m_appuser` ( UNIQUE KEY `username_org` (`username`), KEY `FKB3D587CE0DD567A` (`office_id`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -370,16 +370,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -398,27 +398,27 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -436,16 +436,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar_instance`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -463,21 +463,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -496,11 +496,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `office_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, @@ -509,13 +509,13 @@ CREATE TABLE `m_client` ( `display_name` varchar(100) NOT NULL, `image_key` varchar(500) DEFAULT NULL, `joined_date` date DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), KEY `FKCE00CAB3E0DD567A` (`office_id`), CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -534,15 +534,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client_identifier`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -552,7 +552,7 @@ CREATE TABLE `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -570,14 +570,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` tinyint(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -596,17 +596,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -625,17 +625,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -654,19 +654,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(50) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -684,15 +684,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_fund`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -710,17 +710,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `parent_id` bigint(20) DEFAULT NULL, - `level_Id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, + `level_Id` INT NOT NULL, `hierarchy` varchar(100) DEFAULT NULL, `name` varchar(100) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`level_Id`), UNIQUE KEY `external_id` (`external_id`,`level_Id`), @@ -732,7 +732,7 @@ CREATE TABLE `m_group` ( CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`), CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -750,15 +750,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -776,18 +776,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_level`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_level` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `parent_id` int(11) DEFAULT NULL, - `super_parent` tinyint(1) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `parent_id` INT DEFAULT NULL, + `super_parent` tinyint NOT NULL, `level_name` varchar(100) NOT NULL, - `recursable` tinyint(1) NOT NULL, - `can_have_clients` tinyint(1) NOT NULL, + `recursable` tinyint NOT NULL, + `can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -806,13 +806,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_guarantor`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_guarantor` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `client_reln_cv_id` int(11) DEFAULT NULL, - `type_enum` smallint(5) NOT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `client_reln_cv_id` INT DEFAULT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `dob` date DEFAULT NULL, @@ -830,7 +830,7 @@ CREATE TABLE `m_guarantor` ( KEY `FK_m_guarantor_m_code_value` (`client_reln_cv_id`), CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -848,48 +848,48 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `min_principal_amount` decimal(19,6) NOT NULL, `max_principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -918,12 +918,12 @@ CREATE TABLE `m_loan` ( `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -953,7 +953,7 @@ CREATE TABLE `m_loan` ( CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -972,9 +972,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_arrears_aging`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -983,7 +983,7 @@ CREATE TABLE `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1001,15 +1001,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -1017,14 +1017,14 @@ CREATE TABLE `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1043,11 +1043,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_collateral`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `value` decimal(19,6) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), @@ -1055,7 +1055,7 @@ CREATE TABLE `m_loan_collateral` ( KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1074,23 +1074,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_officer_assignment_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1109,13 +1109,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_repayment_schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -1131,15 +1131,15 @@ CREATE TABLE `m_loan_repayment_schedule` ( `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL, `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `interest_waived_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1158,12 +1158,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -1173,7 +1173,7 @@ CREATE TABLE `m_loan_transaction` ( PRIMARY KEY (`id`), KEY `FKCFCEA42640BE0710` (`loan_id`), CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1191,19 +1191,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_note`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -1217,7 +1217,7 @@ CREATE TABLE `m_note` ( CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1235,10 +1235,10 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -1248,7 +1248,7 @@ CREATE TABLE `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1267,13 +1267,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -1282,7 +1282,7 @@ CREATE TABLE `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1300,16 +1300,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_organisation_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1328,17 +1328,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=308 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=308 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1357,25 +1357,25 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_portfolio_command_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, + `processing_result_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), KEY `FK_m_checker_m_appuser` (`checker_id`), @@ -1390,7 +1390,7 @@ CREATE TABLE `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1409,36 +1409,36 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `min_principal_amount` decimal(19,6) NOT NULL, `max_principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), KEY `FKA6A8A7D77240145` (`fund_id`), KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1457,15 +1457,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1483,14 +1483,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1509,16 +1509,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1537,25 +1537,25 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', `activation_date` date DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_annual_interest_rate` decimal(19,6) NOT NULL, - `interest_compounding_period_enum` smallint(5) NOT NULL, - `interest_calculation_type_enum` smallint(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` smallint(5) NOT NULL, + `interest_compounding_period_enum` SMALLINT NOT NULL, + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, `lockedin_until_date_derived` date DEFAULT NULL, `total_deposits_derived` decimal(19,6) DEFAULT NULL, `total_withdrawals_derived` decimal(19,6) DEFAULT NULL, @@ -1571,7 +1571,7 @@ CREATE TABLE `m_savings_account` ( CONSTRAINT `FKSA00000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1589,22 +1589,22 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `is_reversed` tinyint NOT NULL, `running_balance_derived` decimal(19,6) DEFAULT NULL, - `balance_number_of_days_derived` int(11) DEFAULT NULL, + `balance_number_of_days_derived` INT DEFAULT NULL, `balance_end_date_derived` date DEFAULT NULL, `cumulative_balance_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1622,23 +1622,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_product`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_annual_interest_rate` decimal(19,6) NOT NULL, - `interest_compounding_period_enum` smallint(5) NOT NULL, - `interest_calculation_type_enum` smallint(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` smallint(5) NOT NULL, + `interest_compounding_period_enum` SMALLINT NOT NULL, + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1656,11 +1656,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_staff`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(100) NOT NULL, @@ -1668,7 +1668,7 @@ CREATE TABLE `m_staff` ( UNIQUE KEY `display_name` (`display_name`), KEY `FK_m_staff_m_office` (`office_id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1687,16 +1687,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `r_enum_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1715,18 +1715,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1745,11 +1745,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `rpt_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1767,24 +1767,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `schema_version`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `schema_version` ( - `version_rank` int(11) NOT NULL, - `installed_rank` int(11) NOT NULL, + `version_rank` INT NOT NULL, + `installed_rank` INT NOT NULL, `version` varchar(50) NOT NULL, `description` varchar(200) NOT NULL, `type` varchar(20) NOT NULL, `script` varchar(1000) NOT NULL, - `checksum` int(11) DEFAULT NULL, + `checksum` INT DEFAULT NULL, `installed_by` varchar(100) NOT NULL, `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `execution_time` int(11) NOT NULL, - `success` tinyint(1) NOT NULL, + `execution_time` INT NOT NULL, + `success` tinyint NOT NULL, PRIMARY KEY (`version`), KEY `schema_version_vr_idx` (`version_rank`), KEY `schema_version_ir_idx` (`installed_rank`), KEY `schema_version_s_idx` (`success`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1803,9 +1803,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_parameter` ( - `parameter_id` int(11) NOT NULL AUTO_INCREMENT, + `parameter_id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -1816,12 +1816,12 @@ CREATE TABLE `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_parameter_id` int(11) DEFAULT NULL, + `parent_parameter_id` INT DEFAULT NULL, PRIMARY KEY (`parameter_id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), KEY `fk_stretchy_parameter_0001_idx` (`parent_parameter_id`), CONSTRAINT `fk_stretchy_parameter_0001` FOREIGN KEY (`parent_parameter_id`) REFERENCES `stretchy_parameter` (`parameter_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1830,7 +1830,7 @@ CREATE TABLE `stretchy_parameter` ( LOCK TABLES `stretchy_parameter` WRITE; /*!40000 ALTER TABLE `stretchy_parameter` DISABLE KEYS */; -INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'${currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); +INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'$\{currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); /*!40000 ALTER TABLE `stretchy_parameter` ENABLE KEYS */; UNLOCK TABLES; @@ -1840,20 +1840,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report` ( - `report_id` int(11) NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`report_id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1862,7 +1862,7 @@ CREATE TABLE `stretchy_report` ( LOCK TABLES `stretchy_report` WRITE; /*!40000 ALTER TABLE `stretchy_report` DISABLE KEYS */; -INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); +INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); /*!40000 ALTER TABLE `stretchy_report` ENABLE KEYS */; UNLOCK TABLES; @@ -1872,14 +1872,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report_parameter` ( - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`report_id`,`parameter_id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1898,12 +1898,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `x_registered_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-db/multi-tenant-demo-backups/ceda/ceda-schema-customisations.sql b/fineract-db/multi-tenant-demo-backups/ceda/ceda-schema-customisations.sql index d108f4a05..e255ea66e 100644 --- a/fineract-db/multi-tenant-demo-backups/ceda/ceda-schema-customisations.sql +++ b/fineract-db/multi-tenant-demo-backups/ceda/ceda-schema-customisations.sql @@ -163,76 +163,76 @@ where mc.`code_name` = "YesNo"; DROP TABLE IF EXISTS `client additional data`; CREATE TABLE `client additional data` ( - `client_id` bigint(20) NOT NULL, - `Gender_cd` int(11) NOT NULL, + `client_id` BIGINT NOT NULL, + `Gender_cd` INT NOT NULL, `Date of Birth` date NOT NULL, `Home address` text NOT NULL, `Telephone number` varchar(20) NOT NULL, `Telephone number (2nd)` varchar(20) NOT NULL, `Email address` varchar(50) NOT NULL, - `EducationLevel_cd` int(11) NOT NULL, - `MaritalStatus_cd` int(11) NOT NULL, - `Number of children` int(11) NOT NULL, + `EducationLevel_cd` INT NOT NULL, + `MaritalStatus_cd` INT NOT NULL, + `Number of children` INT NOT NULL, `Citizenship` varchar(50) NOT NULL, - `PovertyStatus_cd` int(11) NOT NULL, - `YesNo_cd_Employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL, + `PovertyStatus_cd` INT NOT NULL, + `YesNo_cd_Employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of employment` INT DEFAULT NULL, `Employer name` varchar(50) DEFAULT NULL, - `Number of years` int(11) DEFAULT NULL, + `Number of years` INT DEFAULT NULL, `Monthly salary` decimal(19,6) DEFAULT NULL, - `YesNo_cd_Self employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL, + `YesNo_cd_Self employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of self-employment` INT DEFAULT NULL, `Business address` text, - `Number of employees` int(11) DEFAULT NULL, + `Number of employees` INT DEFAULT NULL, `Monthly salaries paid` decimal(19,6) DEFAULT NULL, `Monthly net income of business activity` decimal(19,6) DEFAULT NULL, `Monthly rent` decimal(19,6) DEFAULT NULL, `Other income generating activities` varchar(100) DEFAULT NULL, - `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL, - `YesNo_cd_Loans with other institutions` int(11) NOT NULL, + `YesNo_cd_Bookkeeping` INT DEFAULT NULL, + `YesNo_cd_Loans with other institutions` INT NOT NULL, `From whom` varchar(100) DEFAULT NULL, `Amount` decimal(19,6) DEFAULT NULL, `Interest rate pa` decimal(19,6) DEFAULT NULL, - `Number of people depending on overal income` int(11) NOT NULL, - `YesNo_cd_Bank account` int(11) NOT NULL, - `YesNo_cd_Business plan provided` int(11) NOT NULL, - `YesNo_cd_Access to internet` int(11) DEFAULT NULL, + `Number of people depending on overal income` INT NOT NULL, + `YesNo_cd_Bank account` INT NOT NULL, + `YesNo_cd_Business plan provided` INT NOT NULL, + `YesNo_cd_Access to internet` INT DEFAULT NULL, `Introduced by` varchar(100) DEFAULT NULL, `Known to introducer since` varchar(100) NOT NULL, `Last visited by` varchar(100) DEFAULT NULL, `Last visited on` date NOT NULL, PRIMARY KEY (`client_id`), CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; DROP TABLE IF EXISTS `impact measurement`; CREATE TABLE `impact measurement` ( - `loan_id` bigint(20) NOT NULL, - `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `YesNo_cd_RepaidOnSchedule` INT NOT NULL, `ReasonNotRepaidOnSchedule` text DEFAULT NULL, `How was Loan Amount Invested` text NOT NULL, `Additional Income Generated` decimal(19,6) NOT NULL, `Additional Income Used For` text NOT NULL, - `YesNo_cd_NewJobsCreated` int(11) NOT NULL, - `Number of Jobs Created` bigint(20) DEFAULT NULL, + `YesNo_cd_NewJobsCreated` INT NOT NULL, + `Number of Jobs Created` BIGINT DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; DROP TABLE IF EXISTS `loan additional data`; CREATE TABLE `loan additional data` ( - `loan_id` bigint(20) NOT NULL, - `PurposeOfLoan_cd` int(11) NOT NULL, - `CollateralType_cd` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `PurposeOfLoan_cd` INT NOT NULL, + `CollateralType_cd` INT NOT NULL, `Collateral notes` text NOT NULL, - `YesNo_cd_Guarantor` int(11) NOT NULL, + `YesNo_cd_Guarantor` INT NOT NULL, `Guarantor name` varchar(100) DEFAULT NULL, `Guarantor relation` varchar(100) DEFAULT NULL, `Guarantor address` varchar(100) DEFAULT NULL, `Guarantor telephone number` varchar(20) DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- datatables mapping INSERT INTO `x_registered_table` diff --git a/fineract-db/multi-tenant-demo-backups/default-demo/bk_mifostenant-default.sql b/fineract-db/multi-tenant-demo-backups/default-demo/bk_mifostenant-default.sql index c1f13f251..61da348c6 100644 --- a/fineract-db/multi-tenant-demo-backups/default-demo/bk_mifostenant-default.sql +++ b/fineract-db/multi-tenant-demo-backups/default-demo/bk_mifostenant-default.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,22 +40,22 @@ DROP TABLE IF EXISTS `acc_gl_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), KEY `FK_ACC_0000000001` (`parent_id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -74,14 +74,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_closure`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -93,7 +93,7 @@ CREATE TABLE `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -111,23 +111,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_journal_entry`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `transaction_id` varchar(50) NOT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', - `manual_entry` tinyint(1) NOT NULL DEFAULT '0', + `reversed` tinyint NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), @@ -141,7 +141,7 @@ CREATE TABLE `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -159,15 +159,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_product_mapping`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -185,13 +185,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `c_configuration`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -210,49 +210,49 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `client additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `client additional data` ( - `client_id` bigint(20) NOT NULL, - `Gender_cd` int(11) NOT NULL, + `client_id` BIGINT NOT NULL, + `Gender_cd` INT NOT NULL, `Date of Birth` date NOT NULL, `Home address` text NOT NULL, `Telephone number` varchar(20) NOT NULL, `Telephone number (2nd)` varchar(20) NOT NULL, `Email address` varchar(50) NOT NULL, - `EducationLevel_cd` int(11) NOT NULL, - `MaritalStatus_cd` int(11) NOT NULL, - `Number of children` int(11) NOT NULL, + `EducationLevel_cd` INT NOT NULL, + `MaritalStatus_cd` INT NOT NULL, + `Number of children` INT NOT NULL, `Citizenship` varchar(50) NOT NULL, - `PovertyStatus_cd` int(11) NOT NULL, - `YesNo_cd_Employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL, + `PovertyStatus_cd` INT NOT NULL, + `YesNo_cd_Employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of employment` INT DEFAULT NULL, `Employer name` varchar(50) DEFAULT NULL, - `Number of years` int(11) DEFAULT NULL, + `Number of years` INT DEFAULT NULL, `Monthly salary` decimal(19,6) DEFAULT NULL, - `YesNo_cd_Self employed` int(11) NOT NULL, - `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL, + `YesNo_cd_Self employed` INT NOT NULL, + `FieldOfEmployment_cd_Field of self-employment` INT DEFAULT NULL, `Business address` text, - `Number of employees` int(11) DEFAULT NULL, + `Number of employees` INT DEFAULT NULL, `Monthly salaries paid` decimal(19,6) DEFAULT NULL, `Monthly net income of business activity` decimal(19,6) DEFAULT NULL, `Monthly rent` decimal(19,6) DEFAULT NULL, `Other income generating activities` varchar(100) DEFAULT NULL, - `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL, - `YesNo_cd_Loans with other institutions` int(11) NOT NULL, + `YesNo_cd_Bookkeeping` INT DEFAULT NULL, + `YesNo_cd_Loans with other institutions` INT NOT NULL, `From whom` varchar(100) DEFAULT NULL, `Amount` decimal(19,6) DEFAULT NULL, `Interest rate pa` decimal(19,6) DEFAULT NULL, - `Number of people depending on overal income` int(11) NOT NULL, - `YesNo_cd_Bank account` int(11) NOT NULL, - `YesNo_cd_Business plan provided` int(11) NOT NULL, - `YesNo_cd_Access to internet` int(11) DEFAULT NULL, + `Number of people depending on overal income` INT NOT NULL, + `YesNo_cd_Bank account` INT NOT NULL, + `YesNo_cd_Business plan provided` INT NOT NULL, + `YesNo_cd_Access to internet` INT DEFAULT NULL, `Introduced by` varchar(100) DEFAULT NULL, `Known to introducer since` varchar(100) NOT NULL, `Last visited by` varchar(100) DEFAULT NULL, `Last visited on` date NOT NULL, PRIMARY KEY (`client_id`), CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -270,19 +270,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_client_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_client_details` ( - `client_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`client_id`), CONSTRAINT `FK_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -300,19 +300,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_family_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_family_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, `Name` varchar(40) DEFAULT NULL, `Date of Birth` date DEFAULT NULL, - `Points Score` int(11) DEFAULT NULL, - `Education_cd_Highest` int(11) DEFAULT NULL, + `Points Score` INT DEFAULT NULL, + `Education_cd_Highest` INT DEFAULT NULL, `Other Notes` text, PRIMARY KEY (`id`), KEY `FK_Extra Family Details Data_1` (`client_id`), CONSTRAINT `FK_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -330,19 +330,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_loan_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_loan_details` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -360,19 +360,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `impact measurement`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `impact measurement` ( - `loan_id` bigint(20) NOT NULL, - `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `YesNo_cd_RepaidOnSchedule` INT NOT NULL, `ReasonNotRepaidOnSchedule` text, `How was Loan Amount Invested` text NOT NULL, `Additional Income Generated` decimal(19,6) NOT NULL, `Additional Income Used For` text NOT NULL, - `YesNo_cd_NewJobsCreated` int(11) NOT NULL, - `Number of Jobs Created` bigint(20) DEFAULT NULL, + `YesNo_cd_NewJobsCreated` INT NOT NULL, + `Number of Jobs Created` BIGINT DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -390,20 +390,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `loan additional data`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `loan additional data` ( - `loan_id` bigint(20) NOT NULL, - `PurposeOfLoan_cd` int(11) NOT NULL, - `CollateralType_cd` int(11) NOT NULL, + `loan_id` BIGINT NOT NULL, + `PurposeOfLoan_cd` INT NOT NULL, + `CollateralType_cd` INT NOT NULL, `Collateral notes` text NOT NULL, - `YesNo_cd_Guarantor` int(11) NOT NULL, + `YesNo_cd_Guarantor` INT NOT NULL, `Guarantor name` varchar(100) DEFAULT NULL, `Guarantor relation` varchar(100) DEFAULT NULL, `Guarantor address` varchar(100) DEFAULT NULL, `Guarantor telephone number` varchar(20) DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -421,11 +421,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -440,7 +440,7 @@ CREATE TABLE `m_appuser` ( UNIQUE KEY `username_org` (`username`), KEY `FKB3D587CE0DD567A` (`office_id`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -459,16 +459,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -487,27 +487,27 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -525,16 +525,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_calendar_instance`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -552,21 +552,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -584,11 +584,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `office_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, @@ -597,13 +597,13 @@ CREATE TABLE `m_client` ( `display_name` varchar(100) NOT NULL, `image_key` varchar(500) DEFAULT NULL, `joined_date` date DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), KEY `FKCE00CAB3E0DD567A` (`office_id`), CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -621,15 +621,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client_identifier`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -639,7 +639,7 @@ CREATE TABLE `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -657,14 +657,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` tinyint(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -683,17 +683,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -712,17 +712,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -741,19 +741,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(50) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -771,15 +771,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_fund`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -797,17 +797,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `parent_id` bigint(20) DEFAULT NULL, - `level_Id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, + `level_Id` INT NOT NULL, `hierarchy` varchar(100) DEFAULT NULL, `name` varchar(100) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`level_Id`), UNIQUE KEY `external_id` (`external_id`,`level_Id`), @@ -819,7 +819,7 @@ CREATE TABLE `m_group` ( CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`), CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -837,15 +837,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -863,18 +863,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_level`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_level` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `parent_id` int(11) DEFAULT NULL, - `super_parent` tinyint(1) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `parent_id` INT DEFAULT NULL, + `super_parent` tinyint NOT NULL, `level_name` varchar(100) NOT NULL, - `recursable` tinyint(1) NOT NULL, - `can_have_clients` tinyint(1) NOT NULL, + `recursable` tinyint NOT NULL, + `can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -893,12 +893,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_guarantor`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_guarantor` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_enum` smallint(5) NOT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `dob` date DEFAULT NULL, @@ -914,7 +914,7 @@ CREATE TABLE `m_guarantor` ( PRIMARY KEY (`id`), KEY `FK_m_guarantor_m_loan` (`loan_id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -932,46 +932,46 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -1000,12 +1000,12 @@ CREATE TABLE `m_loan` ( `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -1035,7 +1035,7 @@ CREATE TABLE `m_loan` ( CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1053,9 +1053,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_arrears_aging`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -1064,7 +1064,7 @@ CREATE TABLE `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1082,15 +1082,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -1098,14 +1098,14 @@ CREATE TABLE `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1123,18 +1123,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_collateral`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_collateral_m_loan` (`loan_id`), KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1152,23 +1152,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_officer_assignment_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1186,13 +1186,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_repayment_schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -1208,15 +1208,15 @@ CREATE TABLE `m_loan_repayment_schedule` ( `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL, `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `interest_waived_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1234,12 +1234,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -1249,7 +1249,7 @@ CREATE TABLE `m_loan_transaction` ( PRIMARY KEY (`id`), KEY `FKCFCEA42640BE0710` (`loan_id`), CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1267,19 +1267,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_note`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -1293,7 +1293,7 @@ CREATE TABLE `m_note` ( CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1311,10 +1311,10 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -1324,7 +1324,7 @@ CREATE TABLE `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1343,13 +1343,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -1358,7 +1358,7 @@ CREATE TABLE `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1376,16 +1376,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_organisation_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1404,17 +1404,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=299 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=299 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1433,24 +1433,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_portfolio_command_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, + `processing_result_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), KEY `FK_m_checker_m_appuser` (`checker_id`), @@ -1465,7 +1465,7 @@ CREATE TABLE `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1483,34 +1483,34 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), KEY `FKA6A8A7D77240145` (`fund_id`), KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1528,15 +1528,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1554,14 +1554,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1580,16 +1580,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1608,24 +1608,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', `activation_date` date DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, `lockedin_until_date_derived` date DEFAULT NULL, `total_deposits_derived` decimal(19,6) DEFAULT NULL, `total_withdrawals_derived` decimal(19,6) DEFAULT NULL, @@ -1640,7 +1640,7 @@ CREATE TABLE `m_savings_account` ( CONSTRAINT `FKSA00000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1658,18 +1658,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_account_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `is_reversed` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1687,21 +1687,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_savings_product`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1719,11 +1719,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_staff`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(100) NOT NULL, @@ -1731,7 +1731,7 @@ CREATE TABLE `m_staff` ( UNIQUE KEY `display_name` (`display_name`), KEY `FK_m_staff_m_office` (`office_id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1749,16 +1749,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `r_enum_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1777,18 +1777,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1807,11 +1807,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `rpt_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1829,9 +1829,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_parameter` ( - `parameter_id` int(11) NOT NULL AUTO_INCREMENT, + `parameter_id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -1842,12 +1842,12 @@ CREATE TABLE `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_parameter_id` int(11) DEFAULT NULL, + `parent_parameter_id` INT DEFAULT NULL, PRIMARY KEY (`parameter_id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), KEY `fk_stretchy_parameter_0001_idx` (`parent_parameter_id`), CONSTRAINT `fk_stretchy_parameter_0001` FOREIGN KEY (`parent_parameter_id`) REFERENCES `stretchy_parameter` (`parameter_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1856,7 +1856,7 @@ CREATE TABLE `stretchy_parameter` ( LOCK TABLES `stretchy_parameter` WRITE; /*!40000 ALTER TABLE `stretchy_parameter` DISABLE KEYS */; -INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'${currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); +INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'$\{currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); /*!40000 ALTER TABLE `stretchy_parameter` ENABLE KEYS */; UNLOCK TABLES; @@ -1866,20 +1866,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report` ( - `report_id` int(11) NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`report_id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1888,7 +1888,7 @@ CREATE TABLE `stretchy_report` ( LOCK TABLES `stretchy_report` WRITE; /*!40000 ALTER TABLE `stretchy_report` DISABLE KEYS */; -INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); +INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); /*!40000 ALTER TABLE `stretchy_report` ENABLE KEYS */; UNLOCK TABLES; @@ -1898,14 +1898,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report_parameter` ( - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`report_id`,`parameter_id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1924,12 +1924,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `x_registered_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-db/multi-tenant-demo-backups/default-demo/extra-datatables-and-code-values.sql b/fineract-db/multi-tenant-demo-backups/default-demo/extra-datatables-and-code-values.sql index 0c19e3204..cdaa53cbe 100644 --- a/fineract-db/multi-tenant-demo-backups/default-demo/extra-datatables-and-code-values.sql +++ b/fineract-db/multi-tenant-demo-backups/default-demo/extra-datatables-and-code-values.sql @@ -70,45 +70,45 @@ where mc.`code_name` = "Education"; DROP TABLE IF EXISTS `extra_client_details`; CREATE TABLE `extra_client_details` ( - `client_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`client_id`), CONSTRAINT `FK_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; DROP TABLE IF EXISTS `extra_family_details`; CREATE TABLE `extra_family_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, `Name` varchar(40) DEFAULT NULL, `Date of Birth` date DEFAULT NULL, - `Points Score` int(11) DEFAULT NULL, - `Education_cd_Highest` int(11) DEFAULT NULL, + `Points Score` INT DEFAULT NULL, + `Education_cd_Highest` INT DEFAULT NULL, `Other Notes` text, PRIMARY KEY (`id`), KEY `FK_Extra Family Details Data_1` (`client_id`), CONSTRAINT `FK_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; DROP TABLE IF EXISTS `extra_loan_details`; CREATE TABLE `extra_loan_details` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- datatables mapping INSERT INTO `x_registered_table` diff --git a/fineract-db/multi-tenant-demo-backups/gk-maarg/0001b-gk-datatables.sql b/fineract-db/multi-tenant-demo-backups/gk-maarg/0001b-gk-datatables.sql index f94b9307c..9a0982f80 100644 --- a/fineract-db/multi-tenant-demo-backups/gk-maarg/0001b-gk-datatables.sql +++ b/fineract-db/multi-tenant-demo-backups/gk-maarg/0001b-gk-datatables.sql @@ -19,7 +19,7 @@ DROP TABLE IF EXISTS `risk_analysis`; CREATE TABLE `risk_analysis` ( - `client_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, `proposed_loan_amount` decimal(19,6) DEFAULT NULL, `assets_cash` decimal(19,6) DEFAULT NULL, `assets_bank_accounts` decimal(19,6) DEFAULT NULL, @@ -55,4 +55,4 @@ CREATE TABLE `risk_analysis` ( `fi_repayment_capacity` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`client_id`), CONSTRAINT `FK_risk_analysis_1` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; \ No newline at end of file diff --git a/fineract-db/multi-tenant-demo-backups/latam-demo/bk_latam.sql b/fineract-db/multi-tenant-demo-backups/latam-demo/bk_latam.sql index bfe872dab..daa11df0d 100644 --- a/fineract-db/multi-tenant-demo-backups/latam-demo/bk_latam.sql +++ b/fineract-db/multi-tenant-demo-backups/latam-demo/bk_latam.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,22 +40,22 @@ DROP TABLE IF EXISTS `acc_gl_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), KEY `FK_ACC_0000000001` (`parent_id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -73,14 +73,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_closure`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -92,7 +92,7 @@ CREATE TABLE `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -110,23 +110,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_gl_journal_entry`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `transaction_id` varchar(50) NOT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', - `portfolio_generated` tinyint(1) NOT NULL DEFAULT '0', + `reversed` tinyint NOT NULL DEFAULT '0', + `portfolio_generated` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(50) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, `entity_type` varchar(50) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), @@ -140,7 +140,7 @@ CREATE TABLE `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -158,15 +158,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `acc_product_mapping`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -184,13 +184,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `c_configuration`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -209,19 +209,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_client_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_client_details` ( - `client_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`client_id`), CONSTRAINT `FK_latam_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -239,19 +239,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_family_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_family_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, `Name` varchar(40) DEFAULT NULL, `Date of Birth` date DEFAULT NULL, - `Points Score` int(11) DEFAULT NULL, - `Education_cd_Highest` int(11) DEFAULT NULL, + `Points Score` INT DEFAULT NULL, + `Education_cd_Highest` INT DEFAULT NULL, `Other Notes` text, PRIMARY KEY (`id`), KEY `FK_Extra Family Details Data_1` (`client_id`), CONSTRAINT `FK_latam_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -269,19 +269,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `extra_loan_details`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `extra_loan_details` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_latam_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -299,11 +299,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -318,7 +318,7 @@ CREATE TABLE `m_appuser` ( UNIQUE KEY `username_org` (`username`), KEY `FKB3D587CE0DD567A` (`office_id`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -337,16 +337,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_appuser_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -365,21 +365,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -397,11 +397,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `office_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, @@ -410,13 +410,13 @@ CREATE TABLE `m_client` ( `display_name` varchar(100) NOT NULL, `image_key` varchar(500) DEFAULT NULL, `joined_date` date DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), KEY `FKCE00CAB3E0DD567A` (`office_id`), CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -434,15 +434,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_client_identifier`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -452,7 +452,7 @@ CREATE TABLE `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -470,14 +470,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` tinyint(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -496,17 +496,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_code_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -525,17 +525,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -554,21 +554,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_deposit_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_deposit_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `status_enum` smallint(5) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `status_enum` SMALLINT NOT NULL DEFAULT '0', `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) NOT NULL, - `product_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, + `product_id` BIGINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `deposit_amount` decimal(19,6) DEFAULT NULL, `maturity_nominal_interest_rate` decimal(19,6) NOT NULL, - `tenure_months` int(11) NOT NULL, - `interest_compounded_every` smallint(5) NOT NULL DEFAULT '1', - `interest_compounded_every_period_enum` smallint(5) NOT NULL DEFAULT '2', + `tenure_months` INT NOT NULL, + `interest_compounded_every` SMALLINT NOT NULL DEFAULT '1', + `interest_compounded_every_period_enum` SMALLINT NOT NULL DEFAULT '2', `projected_commencement_date` date NOT NULL, `actual_commencement_date` date DEFAULT NULL, `matures_on_date` datetime DEFAULT NULL, @@ -576,27 +576,27 @@ CREATE TABLE `m_deposit_account` ( `actual_interest_accrued` decimal(19,6) DEFAULT NULL, `projected_total_maturity_amount` decimal(19,6) NOT NULL, `actual_total_amount` decimal(19,6) DEFAULT NULL, - `is_compounding_interest_allowed` tinyint(1) NOT NULL DEFAULT '0', + `is_compounding_interest_allowed` tinyint NOT NULL DEFAULT '0', `interest_paid` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_interest_withdrawable` tinyint(1) NOT NULL DEFAULT '0', + `is_interest_withdrawable` tinyint NOT NULL DEFAULT '0', `available_interest` decimal(19,6) DEFAULT '0.000000', `interest_posted_amount` decimal(19,6) DEFAULT '0.000000', `last_interest_posted_date` date DEFAULT NULL, `next_interest_posting_date` date DEFAULT NULL, - `is_renewal_allowed` tinyint(1) NOT NULL DEFAULT '0', - `renewed_account_id` bigint(20) DEFAULT NULL, - `is_preclosure_allowed` tinyint(1) NOT NULL DEFAULT '0', + `is_renewal_allowed` tinyint NOT NULL DEFAULT '0', + `renewed_account_id` BIGINT DEFAULT NULL, + `is_preclosure_allowed` tinyint NOT NULL DEFAULT '0', `pre_closure_interest_rate` decimal(19,6) NOT NULL, - `is_lock_in_period_allowed` tinyint(1) NOT NULL DEFAULT '0', - `lock_in_period` bigint(20) DEFAULT NULL, - `lock_in_period_type` smallint(5) NOT NULL DEFAULT '2', + `is_lock_in_period_allowed` tinyint NOT NULL DEFAULT '0', + `lock_in_period` BIGINT DEFAULT NULL, + `lock_in_period_type` SMALLINT NOT NULL DEFAULT '2', `withdrawnon_date` datetime DEFAULT NULL, `rejectedon_date` datetime DEFAULT NULL, `closedon_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `deposit_acc_external_id` (`external_id`), KEY `FKKW0000000000001` (`client_id`), @@ -605,7 +605,7 @@ CREATE TABLE `m_deposit_account` ( CONSTRAINT `FKKW0000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKKW0000000000002` FOREIGN KEY (`product_id`) REFERENCES `m_product_deposit` (`id`), CONSTRAINT `FKKW0000000000003` FOREIGN KEY (`renewed_account_id`) REFERENCES `m_deposit_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -623,12 +623,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_deposit_account_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_deposit_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `deposit_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, - `contra_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `deposit_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, + `contra_id` BIGINT DEFAULT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `interest` decimal(19,6) NOT NULL, @@ -638,7 +638,7 @@ CREATE TABLE `m_deposit_account_transaction` ( KEY `FKKW00000000000006` (`contra_id`), CONSTRAINT `FKKW00000000000005` FOREIGN KEY (`deposit_account_id`) REFERENCES `m_deposit_account` (`id`), CONSTRAINT `FKKW00000000000006` FOREIGN KEY (`contra_id`) REFERENCES `m_deposit_account_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -656,19 +656,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(50) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -686,15 +686,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_fund`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -712,19 +712,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `name` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), UNIQUE KEY `external_id` (`external_id`), KEY `office_id` (`office_id`), CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -742,15 +742,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_group_client`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -768,12 +768,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_guarantor`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_guarantor` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_enum` smallint(5) NOT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `dob` date DEFAULT NULL, @@ -789,7 +789,7 @@ CREATE TABLE `m_guarantor` ( PRIMARY KEY (`id`), KEY `FK_m_guarantor_m_loan` (`loan_id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -807,33 +807,33 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `guarantor_id` bigint(20) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `guarantor_id` BIGINT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `submittedon_date` datetime DEFAULT NULL, `approvedon_date` datetime DEFAULT NULL, @@ -848,11 +848,11 @@ CREATE TABLE `m_loan` ( `rescheduledon_date` datetime DEFAULT NULL, `withdrawnon_date` datetime DEFAULT NULL, `writtenoffon_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -870,7 +870,7 @@ CREATE TABLE `m_loan` ( CONSTRAINT `FK_loan_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`), CONSTRAINT `FK_m_loan_m_staff` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -888,15 +888,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -904,13 +904,13 @@ CREATE TABLE `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -928,23 +928,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_officer_assignment_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -962,13 +962,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_repayment_schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -984,15 +984,15 @@ CREATE TABLE `m_loan_repayment_schedule` ( `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL, `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `interest_waived_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1010,18 +1010,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_loan_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, - `contra_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, + `contra_id` BIGINT DEFAULT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, `interest_portion_derived` decimal(19,6) DEFAULT NULL, `fee_charges_portion_derived` decimal(19,6) DEFAULT NULL, @@ -1031,7 +1031,7 @@ CREATE TABLE `m_loan_transaction` ( KEY `FKCFCEA426FC69F3F1` (`contra_id`), CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FKCFCEA426FC69F3F1` FOREIGN KEY (`contra_id`) REFERENCES `m_loan_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1049,20 +1049,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_note`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `deposit_account_id` bigint(20) DEFAULT NULL, - `saving_account_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `deposit_account_id` BIGINT DEFAULT NULL, + `saving_account_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -1078,7 +1078,7 @@ CREATE TABLE `m_note` ( CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_note_m_deposit_account` FOREIGN KEY (`deposit_account_id`) REFERENCES `m_deposit_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1096,10 +1096,10 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -1109,7 +1109,7 @@ CREATE TABLE `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1128,13 +1128,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_office_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -1143,7 +1143,7 @@ CREATE TABLE `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1161,16 +1161,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_organisation_currency`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1189,17 +1189,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=237 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=237 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1218,23 +1218,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_portfolio_command_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, + `processing_result_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), KEY `FK_m_checker_m_appuser` (`checker_id`), @@ -1249,7 +1249,7 @@ CREATE TABLE `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1267,34 +1267,34 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_deposit`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_deposit` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', `external_id` varchar(100) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `minimum_balance` decimal(19,6) DEFAULT NULL, `maximum_balance` decimal(19,6) DEFAULT NULL, - `tenure_months` int(11) NOT NULL, - `interest_compounded_every` smallint(5) NOT NULL DEFAULT '1', - `interest_compounded_every_period_enum` smallint(5) NOT NULL DEFAULT '2', + `tenure_months` INT NOT NULL, + `interest_compounded_every` SMALLINT NOT NULL DEFAULT '1', + `interest_compounded_every_period_enum` SMALLINT NOT NULL DEFAULT '2', `maturity_default_interest_rate` decimal(19,6) NOT NULL, `maturity_min_interest_rate` decimal(19,6) NOT NULL, `maturity_max_interest_rate` decimal(19,6) NOT NULL, - `is_compounding_interest_allowed` tinyint(1) NOT NULL DEFAULT '0', - `is_renewal_allowed` tinyint(1) NOT NULL DEFAULT '0', - `is_preclosure_allowed` tinyint(1) NOT NULL DEFAULT '0', + `is_compounding_interest_allowed` tinyint NOT NULL DEFAULT '0', + `is_renewal_allowed` tinyint NOT NULL DEFAULT '0', + `is_preclosure_allowed` tinyint NOT NULL DEFAULT '0', `pre_closure_interest_rate` decimal(19,6) NOT NULL, - `is_lock_in_period_allowed` tinyint(1) NOT NULL DEFAULT '0', - `lock_in_period` bigint(20) DEFAULT NULL, - `lock_in_period_type` smallint(5) NOT NULL DEFAULT '2', - `createdby_id` bigint(20) DEFAULT NULL, + `is_lock_in_period_allowed` tinyint NOT NULL DEFAULT '0', + `lock_in_period` BIGINT DEFAULT NULL, + `lock_in_period_type` SMALLINT NOT NULL DEFAULT '2', + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_deposit_product` (`name`), UNIQUE KEY `externalid_deposit_product` (`external_id`), @@ -1302,7 +1302,7 @@ CREATE TABLE `m_product_deposit` ( KEY `FKJPW0000000000004` (`lastmodifiedby_id`), CONSTRAINT `FKJPX0000000000003` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FKJPX0000000000004` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1320,33 +1320,33 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKA6A8A7D77240145` (`fund_id`), KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1364,15 +1364,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_loan_charge`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1390,40 +1390,40 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_product_savings`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_product_savings` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, `currency_code` varchar(3) DEFAULT NULL, - `currency_digits` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT DEFAULT NULL, `interest_rate` decimal(19,6) DEFAULT NULL, `min_interest_rate` decimal(19,6) DEFAULT NULL, `max_interest_rate` decimal(19,6) DEFAULT NULL, `savings_deposit_amount` decimal(19,6) NOT NULL, - `savings_product_type` smallint(5) DEFAULT NULL, - `tenure_type` smallint(5) DEFAULT NULL, - `deposit_every` bigint(20) DEFAULT NULL, - `tenure` int(11) DEFAULT NULL, - `frequency` int(11) DEFAULT NULL, - `interest_type` smallint(5) DEFAULT NULL, - `interest_calculation_method` smallint(5) DEFAULT NULL, + `savings_product_type` SMALLINT DEFAULT NULL, + `tenure_type` SMALLINT DEFAULT NULL, + `deposit_every` BIGINT DEFAULT NULL, + `tenure` INT DEFAULT NULL, + `frequency` INT DEFAULT NULL, + `interest_type` SMALLINT DEFAULT NULL, + `interest_calculation_method` SMALLINT DEFAULT NULL, `min_bal_for_withdrawal` decimal(19,6) NOT NULL, - `is_partial_deposit_allowed` tinyint(1) NOT NULL DEFAULT '0', - `is_lock_in_period_allowed` tinyint(1) NOT NULL DEFAULT '0', - `lock_in_period` bigint(20) DEFAULT NULL, - `lock_in_period_type` smallint(5) NOT NULL DEFAULT '1', - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, + `is_partial_deposit_allowed` tinyint NOT NULL DEFAULT '0', + `is_lock_in_period_allowed` tinyint NOT NULL DEFAULT '0', + `lock_in_period` BIGINT DEFAULT NULL, + `lock_in_period_type` SMALLINT NOT NULL DEFAULT '1', + `is_deleted` tinyint NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKJPW0000000000003` (`createdby_id`), KEY `FKJPW0000000000004` (`lastmodifiedby_id`), CONSTRAINT `FKJPW0000000000003` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FKJPW0000000000004` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1441,13 +1441,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1466,16 +1466,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_role_permission`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1494,29 +1494,29 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_saving_account`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_saving_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `status_enum` smallint(5) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `status_enum` SMALLINT NOT NULL DEFAULT '0', `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) NOT NULL, - `product_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, + `product_id` BIGINT NOT NULL, `deposit_amount_per_period` decimal(19,6) NOT NULL, - `savings_product_type` smallint(5) DEFAULT NULL, + `savings_product_type` SMALLINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `total_deposit_amount` decimal(19,6) NOT NULL, `reccuring_nominal_interest_rate` decimal(19,6) NOT NULL, `regular_saving_nominal_interest_rate` decimal(19,6) NOT NULL, - `tenure` int(11) NOT NULL, - `tenure_type` smallint(5) DEFAULT NULL, - `deposit_every` bigint(20) DEFAULT NULL, - `frequency` int(11) DEFAULT NULL, - `interest_posting_every` int(11) DEFAULT NULL, - `interest_posting_frequency` int(11) DEFAULT NULL, - `interest_type` smallint(5) DEFAULT NULL, - `interest_calculation_method` smallint(5) DEFAULT NULL, + `tenure` INT NOT NULL, + `tenure_type` SMALLINT DEFAULT NULL, + `deposit_every` BIGINT DEFAULT NULL, + `frequency` INT DEFAULT NULL, + `interest_posting_every` INT DEFAULT NULL, + `interest_posting_frequency` INT DEFAULT NULL, + `interest_type` SMALLINT DEFAULT NULL, + `interest_calculation_method` SMALLINT DEFAULT NULL, `projected_commencement_date` date NOT NULL, `actual_commencement_date` date DEFAULT NULL, `matures_on_date` datetime DEFAULT NULL, @@ -1524,29 +1524,29 @@ CREATE TABLE `m_saving_account` ( `actual_interest_accrued` decimal(19,6) DEFAULT NULL, `projected_total_maturity_amount` decimal(19,6) NOT NULL, `actual_total_amount` decimal(19,6) DEFAULT NULL, - `is_preclosure_allowed` tinyint(1) NOT NULL DEFAULT '0', + `is_preclosure_allowed` tinyint NOT NULL DEFAULT '0', `pre_closure_interest_rate` decimal(19,6) NOT NULL, `outstanding_amount` decimal(19,6) NOT NULL, `interest_posted_amount` decimal(19,6) DEFAULT '0.000000', `last_interest_posted_date` date DEFAULT NULL, `next_interest_posting_date` date DEFAULT NULL, - `is_lock_in_period_allowed` tinyint(1) NOT NULL DEFAULT '0', - `lock_in_period` bigint(20) DEFAULT NULL, - `lock_in_period_type` smallint(5) NOT NULL DEFAULT '1', + `is_lock_in_period_allowed` tinyint NOT NULL DEFAULT '0', + `lock_in_period` BIGINT DEFAULT NULL, + `lock_in_period_type` SMALLINT NOT NULL DEFAULT '1', `withdrawnon_date` datetime DEFAULT NULL, `rejectedon_date` datetime DEFAULT NULL, `closedon_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `deposit_acc_external_id` (`external_id`), KEY `FKSA0000000000001` (`client_id`), KEY `FKSA0000000000002` (`product_id`), CONSTRAINT `FKSA0000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSA0000000000002` FOREIGN KEY (`product_id`) REFERENCES `m_product_savings` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1564,24 +1564,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_saving_account_transaction`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_saving_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `saving_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, - `contra_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `saving_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, + `contra_id` BIGINT DEFAULT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`saving_account_id`), KEY `FKSAT0000000002` (`contra_id`), CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`saving_account_id`) REFERENCES `m_saving_account` (`id`), CONSTRAINT `FKSAT0000000002` FOREIGN KEY (`contra_id`) REFERENCES `m_saving_account_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1599,25 +1599,25 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_saving_schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_saving_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `saving_account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `saving_account_id` BIGINT NOT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `deposit` decimal(21,4) NOT NULL, `payment_date` date DEFAULT NULL, `deposit_paid` decimal(21,4) DEFAULT NULL, `interest_accured` decimal(21,4) DEFAULT '0.0000', `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKSS00000000001` (`saving_account_id`), CONSTRAINT `FKSS00000000001` FOREIGN KEY (`saving_account_id`) REFERENCES `m_saving_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1635,11 +1635,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `m_staff`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(100) NOT NULL, @@ -1647,7 +1647,7 @@ CREATE TABLE `m_staff` ( UNIQUE KEY `display_name` (`display_name`), KEY `FK_m_staff_m_office` (`office_id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1665,16 +1665,16 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `r_enum_value`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1693,18 +1693,18 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1723,11 +1723,11 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `rpt_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1745,9 +1745,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_parameter` ( - `parameter_id` int(11) NOT NULL AUTO_INCREMENT, + `parameter_id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -1760,7 +1760,7 @@ CREATE TABLE `stretchy_parameter` ( `parameter_sql` text, PRIMARY KEY (`parameter_id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`) -) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1779,20 +1779,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report` ( - `report_id` int(11) NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`report_id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1801,7 +1801,7 @@ CREATE TABLE `stretchy_report` ( LOCK TABLES `stretchy_report` WRITE; /*!40000 ALTER TABLE `stretchy_report` DISABLE KEYS */; -INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select ounder.`name` as \"Office/Branch\", c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", c.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\nLists the small number of defined fields on the client table. Would expect to copy this report and add any \'one to one\' additional data for specific tenant needs.\r\n\r\nCan be run for any size MFI but you\'d expect it only to be run within a branch for larger 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 have that client browser/memory impact).',1,1),(2,'Client Loans Listing','Table',NULL,'Client','select ounder.`name` as \"Office/Branch\", c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund,\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( l.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as Rejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join r_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name = \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nleft join r_enum_value icp on icp.enum_name = \"interest_calculated_in_period_enum\" and icp.enum_id = l.interest_calculated_in_period_enum\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = l.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\n\r\nleft join m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty wide report that lists the basic details of client loans. \r\n\r\nCan be run for any size MFI but you\'d expect it only to be run within a branch for larger ones. There 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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan Portfolio','SELECT ounder.`name` as \"Office/Branch\", lo.display_name as \"Loan Officer\", c.display_name as \"Name\", \r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", f.`name` as Fund,\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\ndate(l.approvedon_date) \"Approved\", l.expected_disbursedon_date \"Expected Disbursal\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, l.expected_disbursedon_date, c.display_name','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan Portfolio','SELECT ounder.`name` as \"Office/Branch\", pl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan Portfolio','SELECT ounder.`name` as \"Office/Branch\", pl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", monthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(10,'Active Loans Portfolio Status','Table',NULL,'Loan','select ounder.`name` as \"Office/Branch\", lo.display_name as \"Loan Officer\", c.display_name as \"Name\", \r\np.`name` as Loan, f.`name` as Fund, l.account_no as \"Loan Account No\",\r\nl.disbursedon_date as Disbursed, ifnull(cur.display_symbol, l.currency_code) as Currency,\r\nsum(r.principal_amount - ifnull(r.principal_completed_derived, 0)) as \"Principal Outstanding\",\r\nsum(r.interest_amount - ifnull(r.interest_completed_derived, 0)) as \"Interest Outstanding\",\r\n\r\nif(datediff(curdate(), min(r.duedate)) < 0, 0, datediff(curdate(), min(r.duedate))) as \"Days Overdue\", \r\nmin(r.installment) as \"First Overdue Installment\",\r\nmin(r.duedate) as \"First Overdue Installment Date\",\r\nsum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) as \"Principal Overdue\",\r\nsum(if(r.duedate <= curdate(), \r\n (ifnull(r.interest_amount, 0) - ifnull(r.interest_completed_derived, 0))\r\n , 0)) as \"Interest Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\n and r.completed_derived is false\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, p.`name`, l.currency_code, c.display_name, l.account_no','Individual Client Report',1,1),(11,'Active Loans Summary per Branch','Table',NULL,'Loan Portfolio','select ounder.`name` as \"Office/Branch\", ifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\", count(distinct(l.id)) as \"No. of Active Loans\",\r\ncount(distinct(\r\n if(r.duedate <= curdate(), \r\n if(r.principal_amount - ifnull(r.principal_completed_derived, 0) > 0, l.id, null), null)\r\n )) as \"No. of Loans in Arrears\",\r\n\r\nsum(l.principal_amount) as \"Total Loans Disbursed\",\r\nsum(ifnull(r.principal_completed_derived, 0)) as \"Total Principal Repaid\",\r\nsum(ifnull(r.interest_completed_derived, 0)) as \"Total Interest Repaid\",\r\nsum(r.principal_amount - ifnull(r.principal_completed_derived, 0)) as \"Total Principal Outstanding\",\r\nsum(ifnull(r.interest_amount, 0) - ifnull(r.interest_completed_derived, 0)) as \"Total Interest Outstanding\",\r\nsum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) as \"Total Principal in Arrears\",\r\ncast(round(\r\n (sum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) * 100) / \r\n sum(r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 2) as char)\r\n as \"Portfolio at Risk %\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand l.loan_status_id = 300\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code',NULL,1,1),(15,'Portfolio at Risk','Table',NULL,'Loan Portfolio','select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(r.principal_amount - ifnull(r.principal_completed_derived, 0)) as \"Principal Outstanding\",\r\nsum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) as \"Principal Overdue\",\r\n \r\n cast(round(\r\n (sum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) * 100) / \r\n sum(r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 2) as char)\r\n as \"Portfolio at Risk %\"\r\n \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\n and r.completed_derived is false\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code',NULL,1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan Portfolio','select concat(substring(\"........................................\", 1, \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(r.principal_amount - ifnull(r.principal_completed_derived, 0)) as \"Principal Outstanding\",\r\nsum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) as \"Principal Overdue\",\r\n \r\n cast(round(\r\n (sum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) * 100) / \r\n sum(r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 2) as char)\r\n as \"Portfolio at Risk %\"\r\n \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\n and r.completed_derived is false\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code',NULL,1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, round(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select ounder.`name` as \"Office/Branch\", ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, round(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office o\r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,0),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,0),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,0); +INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select ounder.`name` as \"Office/Branch\", c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", c.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\nLists the small number of defined fields on the client table. Would expect to copy this report and add any \'one to one\' additional data for specific tenant needs.\r\n\r\nCan be run for any size MFI but you\'d expect it only to be run within a branch for larger 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 have that client browser/memory impact).',1,1),(2,'Client Loans Listing','Table',NULL,'Client','select ounder.`name` as \"Office/Branch\", c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund,\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( l.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as Rejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join r_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name = \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nleft join r_enum_value icp on icp.enum_name = \"interest_calculated_in_period_enum\" and icp.enum_id = l.interest_calculated_in_period_enum\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = l.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\n\r\nleft join m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty wide report that lists the basic details of client loans. \r\n\r\nCan be run for any size MFI but you\'d expect it only to be run within a branch for larger ones. There 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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan Portfolio','SELECT ounder.`name` as \"Office/Branch\", lo.display_name as \"Loan Officer\", c.display_name as \"Name\", \r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", f.`name` as Fund,\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\ndate(l.approvedon_date) \"Approved\", l.expected_disbursedon_date \"Expected Disbursal\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, l.expected_disbursedon_date, c.display_name','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan Portfolio','SELECT ounder.`name` as \"Office/Branch\", pl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan Portfolio','SELECT ounder.`name` as \"Office/Branch\", pl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", monthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(10,'Active Loans Portfolio Status','Table',NULL,'Loan','select ounder.`name` as \"Office/Branch\", lo.display_name as \"Loan Officer\", c.display_name as \"Name\", \r\np.`name` as Loan, f.`name` as Fund, l.account_no as \"Loan Account No\",\r\nl.disbursedon_date as Disbursed, ifnull(cur.display_symbol, l.currency_code) as Currency,\r\nsum(r.principal_amount - ifnull(r.principal_completed_derived, 0)) as \"Principal Outstanding\",\r\nsum(r.interest_amount - ifnull(r.interest_completed_derived, 0)) as \"Interest Outstanding\",\r\n\r\nif(datediff(curdate(), min(r.duedate)) < 0, 0, datediff(curdate(), min(r.duedate))) as \"Days Overdue\", \r\nmin(r.installment) as \"First Overdue Installment\",\r\nmin(r.duedate) as \"First Overdue Installment Date\",\r\nsum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) as \"Principal Overdue\",\r\nsum(if(r.duedate <= curdate(), \r\n (ifnull(r.interest_amount, 0) - ifnull(r.interest_completed_derived, 0))\r\n , 0)) as \"Interest Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\n and r.completed_derived is false\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, p.`name`, l.currency_code, c.display_name, l.account_no','Individual Client Report',1,1),(11,'Active Loans Summary per Branch','Table',NULL,'Loan Portfolio','select ounder.`name` as \"Office/Branch\", ifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\", count(distinct(l.id)) as \"No. of Active Loans\",\r\ncount(distinct(\r\n if(r.duedate <= curdate(), \r\n if(r.principal_amount - ifnull(r.principal_completed_derived, 0) > 0, l.id, null), null)\r\n )) as \"No. of Loans in Arrears\",\r\n\r\nsum(l.principal_amount) as \"Total Loans Disbursed\",\r\nsum(ifnull(r.principal_completed_derived, 0)) as \"Total Principal Repaid\",\r\nsum(ifnull(r.interest_completed_derived, 0)) as \"Total Interest Repaid\",\r\nsum(r.principal_amount - ifnull(r.principal_completed_derived, 0)) as \"Total Principal Outstanding\",\r\nsum(ifnull(r.interest_amount, 0) - ifnull(r.interest_completed_derived, 0)) as \"Total Interest Outstanding\",\r\nsum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) as \"Total Principal in Arrears\",\r\ncast(round(\r\n (sum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) * 100) / \r\n sum(r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 2) as char)\r\n as \"Portfolio at Risk %\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand l.loan_status_id = 300\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code',NULL,1,1),(15,'Portfolio at Risk','Table',NULL,'Loan Portfolio','select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(r.principal_amount - ifnull(r.principal_completed_derived, 0)) as \"Principal Outstanding\",\r\nsum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) as \"Principal Overdue\",\r\n \r\n cast(round(\r\n (sum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) * 100) / \r\n sum(r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 2) as char)\r\n as \"Portfolio at Risk %\"\r\n \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\n and r.completed_derived is false\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code',NULL,1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan Portfolio','select concat(substring(\"........................................\", 1, \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(r.principal_amount - ifnull(r.principal_completed_derived, 0)) as \"Principal Outstanding\",\r\nsum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) as \"Principal Overdue\",\r\n \r\n cast(round(\r\n (sum(if(r.duedate <= curdate(), \r\n (r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 0)) * 100) / \r\n sum(r.principal_amount - ifnull(r.principal_completed_derived, 0))\r\n , 2) as char)\r\n as \"Portfolio at Risk %\"\r\n \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\n and r.completed_derived is false\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code',NULL,1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, round(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select ounder.`name` as \"Office/Branch\", ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, round(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office o\r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,0),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,0),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,0); /*!40000 ALTER TABLE `stretchy_report` ENABLE KEYS */; UNLOCK TABLES; @@ -1811,14 +1811,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stretchy_report_parameter`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `stretchy_report_parameter` ( - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`report_id`,`parameter_id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1837,12 +1837,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `x_registered_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-db/multi-tenant-demo-backups/latam-demo/datatables-on-latam-demo.sql b/fineract-db/multi-tenant-demo-backups/latam-demo/datatables-on-latam-demo.sql index 912b6ebcd..ed0d38814 100644 --- a/fineract-db/multi-tenant-demo-backups/latam-demo/datatables-on-latam-demo.sql +++ b/fineract-db/multi-tenant-demo-backups/latam-demo/datatables-on-latam-demo.sql @@ -19,45 +19,45 @@ DROP TABLE IF EXISTS `latam_extra_client_details`; CREATE TABLE `latam_extra_client_details` ( - `client_id` bigint(20) NOT NULL, + `client_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`client_id`), CONSTRAINT `FK_latam_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; DROP TABLE IF EXISTS `latam_family_details`; CREATE TABLE `latam_family_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, `Name` varchar(40) DEFAULT NULL, `Date of Birth` date DEFAULT NULL, - `Points Score` int(11) DEFAULT NULL, - `Education_cd_Highest` int(11) DEFAULT NULL, + `Points Score` INT DEFAULT NULL, + `Education_cd_Highest` INT DEFAULT NULL, `Other Notes` text, PRIMARY KEY (`id`), KEY `FK_Extra Family Details Data_1` (`client_id`), CONSTRAINT `FK_latam_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; DROP TABLE IF EXISTS `latam_extra_loan_details`; CREATE TABLE `latam_extra_loan_details` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `Business Description` varchar(100) DEFAULT NULL, - `Years in Business` int(11) DEFAULT NULL, - `Gender_cd` int(11) DEFAULT NULL, + `Years in Business` INT DEFAULT NULL, + `Gender_cd` INT DEFAULT NULL, `Education_cv` varchar(60) DEFAULT NULL, `Next Visit` date DEFAULT NULL, `Highest Rate Paid` decimal(19,6) DEFAULT NULL, `Comment` text, PRIMARY KEY (`loan_id`), CONSTRAINT `FK_latam_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; INSERT INTO `mifostenant-latam`.`m_code` (`code_name`, `is_system_defined`) VALUES ('Gender', 1); diff --git a/fineract-db/old-schema-files/0001a-mifosplatform-core-ddl-latest.sql b/fineract-db/old-schema-files/0001a-mifosplatform-core-ddl-latest.sql index 025e3a11b..e407abc74 100644 --- a/fineract-db/old-schema-files/0001a-mifosplatform-core-ddl-latest.sql +++ b/fineract-db/old-schema-files/0001a-mifosplatform-core-ddl-latest.sql @@ -82,132 +82,132 @@ SET foreign_key_checks = 1; -- DDL for reference/lookup tables CREATE TABLE `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` TINYINT(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(50) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*not a major table - just intended for database reporting use for enums and values that would be hidden in java*/ CREATE TABLE `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /* used to link MySql tables to Mifos X application tables for additional data needs */ CREATE TABLE `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ================= end of reference/lookup tables ============= -- DDL for office related tables CREATE TABLE `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -217,14 +217,14 @@ CREATE TABLE `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -233,44 +233,44 @@ CREATE TABLE `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ============ end of office related tables ========== -- DDL for admin tables CREATE TABLE `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -285,39 +285,39 @@ CREATE TABLE `m_appuser` ( UNIQUE KEY `username_org` (`username`), KEY `FKB3D587CE0DD567A` (`office_id`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ================ end of user admin tables =============== -- DDL for organisation wide related concepts CREATE TABLE `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, + `processing_result_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), KEY `FK_m_checker_m_appuser` (`checker_id`), @@ -332,36 +332,36 @@ CREATE TABLE `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(100) NOT NULL, @@ -370,33 +370,33 @@ CREATE TABLE `m_staff` ( UNIQUE KEY `display_name` (`display_name`), KEY `FK_m_staff_m_office` (`office_id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ============ end of organisation wide related tables =========== -- DDL client/group related tables CREATE TABLE `m_group_level` ( -`id` INT(11) NOT NULL AUTO_INCREMENT, -`parent_id` INT(11) NULL DEFAULT NULL, -`super_parent` TINYINT(1) NOT NULL, +`id` INT NOT NULL AUTO_INCREMENT, +`parent_id` INT NULL DEFAULT NULL, +`super_parent` tinyint NOT NULL, `level_name` VARCHAR(100) NOT NULL, -`recursable` TINYINT(1) NOT NULL, -`can_have_clients` TINYINT(1) NOT NULL, +`recursable` tinyint NOT NULL, +`can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), INDEX `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -)ENGINE=InnoDB DEFAULT CHARSET=utf8; +)ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `staff_id` BIGINT(20) DEFAULT NULL, - `parent_id` BIGINT(20) NULL DEFAULT NULL, - `level_Id` INT(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT NULL DEFAULT NULL, + `level_Id` INT NOT NULL, `hierarchy` VARCHAR(100) NULL DEFAULT NULL, `name` varchar(100) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`, `level_id`), UNIQUE KEY `external_id` (`external_id`, `level_Id`), @@ -406,12 +406,12 @@ CREATE TABLE `m_group` ( CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`), CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `office_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, @@ -420,22 +420,22 @@ CREATE TABLE `m_client` ( `display_name` varchar(100) NOT NULL, `image_key` varchar(500) DEFAULT NULL, `joined_date` date DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), KEY `FKCE00CAB3E0DD567A` (`office_id`), CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -445,96 +445,96 @@ CREATE TABLE `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ==== end of client/group related tables ========== -- DDL for loan and loan related tables CREATE TABLE `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), KEY `FKA6A8A7D77240145` (`fund_id`), KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -563,12 +563,12 @@ CREATE TABLE `m_loan` ( `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -598,10 +598,10 @@ CREATE TABLE `m_loan` ( CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -610,14 +610,14 @@ CREATE TABLE `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_guarantor` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_id` BIGINT(20) NOT NULL, - `client_reln_cv_id` INT(11) DEFAULT NULL, - `type_enum` SMALLINT(5) NOT NULL, - `entity_id` BIGINT(20) NULL DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `client_reln_cv_id` INT DEFAULT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT NULL DEFAULT NULL, `firstname` VARCHAR(50) NULL DEFAULT NULL, `lastname` VARCHAR(50) NULL DEFAULT NULL, `dob` DATE NULL DEFAULT NULL, @@ -634,16 +634,16 @@ CREATE TABLE `m_guarantor` ( INDEX `FK_m_guarantor_m_loan` (`loan_id`), CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`) CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -651,19 +651,19 @@ CREATE TABLE `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `value` DECIMAL(19,6) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), @@ -671,31 +671,31 @@ CREATE TABLE `m_loan_collateral` ( KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -711,21 +711,21 @@ CREATE TABLE `m_loan_repayment_schedule` ( `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL, `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `interest_waived_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `is_reversed` TINYINT(1) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -735,47 +735,47 @@ CREATE TABLE `m_loan_transaction` ( PRIMARY KEY (`id`), KEY `FKCFCEA42640BE0710` (`loan_id`), CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ======== end of loan related tables ========== CREATE TABLE `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, - `interest_period_enum` SMALLINT(5) NOT NULL, - `interest_calculation_type_enum` SMALLINT(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` SMALLINT(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, + `interest_period_enum` SMALLINT NOT NULL, + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `status_enum` SMALLINT(5) NOT NULL DEFAULT 300, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT 300, `activation_date` DATE DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_period_enum` SMALLINT(5) NOT NULL, - `interest_calculation_type_enum` SMALLINT(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` SMALLINT(5) NOT NULL, + `interest_period_enum` SMALLINT NOT NULL, + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, `lockedin_until_date_derived` DATE DEFAULT NULL, `total_deposits_derived` decimal(19,6) DEFAULT NULL, `total_withdrawals_derived` decimal(19,6) DEFAULT NULL, @@ -791,15 +791,15 @@ CREATE TABLE `m_savings_account` ( CONSTRAINT `FKSA00000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `is_reversed` tinyint NOT NULL, `running_balance_derived` DECIMAL(19,6) NULL, `balance_number_of_days_derived` INT NULL, `balance_end_date_derived` DATE NULL, @@ -807,23 +807,23 @@ CREATE TABLE `m_savings_account_transaction` ( PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- end of savings account related tables -- DDL for notes associated with all client/group and financial accounts CREATE TABLE `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -837,32 +837,32 @@ CREATE TABLE `m_note` ( CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- DDL for accounting sub system related tables CREATE TABLE `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), KEY `FK_ACC_0000000001` (`parent_id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -874,24 +874,24 @@ CREATE TABLE `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `transaction_id` varchar(50) NOT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', - `manual_entry` TINYINT(1) NOT NULL DEFAULT '0', + `reversed` tinyint NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), @@ -905,26 +905,26 @@ CREATE TABLE `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- =========== end of accounting related tables ========== -- DDL for reporting related tables CREATE TABLE `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `stretchy_parameter` ( - `parameter_id` int(11) NOT NULL AUTO_INCREMENT, + `parameter_id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -935,32 +935,32 @@ CREATE TABLE `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_parameter_id` int(11) NULL DEFAULT NULL, + `parent_parameter_id` INT NULL DEFAULT NULL, PRIMARY KEY (`parameter_id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), INDEX `fk_stretchy_parameter_0001_idx` (`parent_parameter_id`), CONSTRAINT `fk_stretchy_parameter_0001` FOREIGN KEY (`parent_parameter_id`) REFERENCES `stretchy_parameter` (`parameter_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `stretchy_report` ( - `report_id` int(11) NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`report_id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `stretchy_report_parameter` ( - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`report_id`,`parameter_id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- =========== end of reporting related tables ============ \ No newline at end of file diff --git a/fineract-db/old-schema-files/0004-mifosx-core-reports-utf8.sql b/fineract-db/old-schema-files/0004-mifosx-core-reports-utf8.sql index eafab0bd4..aa6c6b120 100644 --- a/fineract-db/old-schema-files/0004-mifosx-core-reports-utf8.sql +++ b/fineract-db/old-schema-files/0004-mifosx-core-reports-utf8.sql @@ -21,8 +21,8 @@ truncate table stretchy_parameter; truncate table stretchy_report_parameter; -INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); -INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'${currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); +INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); +INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'$\{currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); INSERT INTO `stretchy_report_parameter` VALUES (1,5,NULL),(2,5,NULL),(2,6,NULL),(2,10,NULL),(2,20,NULL),(2,25,NULL),(2,26,NULL),(5,5,NULL),(5,6,NULL),(5,10,NULL),(5,20,NULL),(5,25,NULL),(5,26,NULL),(6,5,NULL),(6,6,NULL),(6,10,NULL),(6,20,NULL),(6,25,NULL),(6,26,NULL),(7,5,NULL),(7,6,NULL),(7,10,NULL),(7,20,NULL),(7,25,NULL),(7,26,NULL),(8,5,NULL),(8,6,NULL),(8,10,NULL),(8,25,NULL),(8,26,NULL),(11,5,NULL),(11,6,NULL),(11,10,NULL),(11,20,NULL),(11,25,NULL),(11,26,NULL),(11,100,NULL),(12,5,NULL),(12,6,NULL),(12,10,NULL),(12,20,NULL),(12,25,NULL),(12,26,NULL),(13,1,NULL),(13,2,NULL),(13,3,NULL),(13,5,NULL),(13,6,NULL),(13,10,NULL),(13,20,NULL),(13,25,NULL),(13,26,NULL),(14,1,NULL),(14,2,NULL),(14,3,NULL),(14,5,NULL),(14,6,NULL),(14,10,NULL),(14,20,NULL),(14,25,NULL),(14,26,NULL),(15,5,NULL),(15,6,NULL),(15,10,NULL),(15,20,NULL),(15,25,NULL),(15,26,NULL),(15,100,NULL),(16,5,NULL),(16,6,NULL),(16,10,NULL),(16,20,NULL),(16,25,NULL),(16,26,NULL),(16,100,NULL),(20,1,NULL),(20,2,NULL),(20,10,NULL),(20,20,NULL),(21,1,NULL),(21,2,NULL),(21,5,NULL),(21,10,NULL),(21,20,NULL),(48,5,'branch'),(48,2,'date'),(49,5,'branch'),(49,1,'fromDate'),(49,2,'toDate'),(50,5,'branch'),(50,1,'fromDate'),(50,2,'toDate'),(51,1,NULL),(51,2,NULL),(51,5,NULL),(51,10,NULL),(51,25,NULL),(52,5,NULL),(53,5,NULL),(53,10,NULL),(54,1,NULL),(54,2,NULL),(54,5,NULL),(54,10,NULL),(54,25,NULL),(55,5,NULL),(55,6,NULL),(55,10,NULL),(55,20,NULL),(55,25,NULL),(55,26,NULL),(56,5,NULL),(56,6,NULL),(56,10,NULL),(56,20,NULL),(56,25,NULL),(56,26,NULL),(56,100,NULL),(57,5,NULL),(57,6,NULL),(57,10,NULL),(57,20,NULL),(57,25,NULL),(57,26,NULL),(58,5,NULL),(58,6,NULL),(58,10,NULL),(58,20,NULL),(58,25,NULL),(58,26,NULL),(58,100,NULL),(59,1,NULL),(59,2,NULL),(59,5,NULL),(59,6,NULL),(59,10,NULL),(59,20,NULL),(59,25,NULL),(59,26,NULL),(61,5,NULL),(61,10,NULL),(92,1,'fromDate'),(92,5,'selectOffice'),(92,2,'toDate'),(93,1,NULL),(93,2,NULL),(93,5,NULL),(93,6,NULL),(94,2,'endDate'),(94,6,'loanOfficerId'),(94,5,'officeId'),(94,1,'startDate'); insert into m_permission(grouping, `code`, entity_name, action_name, can_maker_checker) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TenantDatabaseUpgradeService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TenantDatabaseUpgradeService.java index a80a6b1ce..dcb709466 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TenantDatabaseUpgradeService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TenantDatabaseUpgradeService.java @@ -78,7 +78,7 @@ public class TenantDatabaseUpgradeService { flyway.migrate(); } catch (FlywayException e) { String betterMessage = e.getMessage() + "; for Tenant DB URL: " + connectionProtocol + ", username: " - + connection.getSchemaUsername(); + + connection.getSchemaUsername(); throw new FlywayException(betterMessage, e.getCause()); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java index 8b161e1d0..612d503c1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java @@ -588,10 +588,10 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ sqlBuilder = sqlBuilder.append("CREATE TABLE `" + datatableName + "` ("); if (multiRow) { - sqlBuilder = sqlBuilder.append("`id` BIGINT(20) NOT NULL AUTO_INCREMENT, ") - .append("`" + fkColumnName + "` BIGINT(20) NOT NULL, "); + sqlBuilder = sqlBuilder.append("`id` BIGINT NOT NULL AUTO_INCREMENT, ") + .append("`" + fkColumnName + "` BIGINT NOT NULL, "); } else { - sqlBuilder = sqlBuilder.append("`" + fkColumnName + "` BIGINT(20) NOT NULL, "); + sqlBuilder = sqlBuilder.append("`" + fkColumnName + "` BIGINT NOT NULL, "); } for (final JsonElement column : columns) { @@ -614,7 +614,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ sqlBuilder.append(constrainBuilder); - sqlBuilder = sqlBuilder.append(") ENGINE=InnoDB DEFAULT CHARSET=utf8;"); + sqlBuilder = sqlBuilder.append(") ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;"); this.jdbcTemplate.execute(sqlBuilder.toString()); registerDatatable(datatableName, apptableName); @@ -906,14 +906,14 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ if (mapColumnNameDefinition.containsKey("id")) { sqlBuilder = sqlBuilder.append("ALTER TABLE `" + datatableName + "` ").append("DROP KEY `fk_" + oldFKName + "`,") .append("DROP FOREIGN KEY `fk_" + oldConstraintName + "`,") - .append("CHANGE COLUMN `" + oldFKName + "` `" + newFKName + "` BIGINT(20) NOT NULL,") + .append("CHANGE COLUMN `" + oldFKName + "` `" + newFKName + "` BIGINT NOT NULL,") .append("ADD KEY `fk_" + newFKName + "` (`" + newFKName + "`),") .append("ADD CONSTRAINT `fk_" + newConstraintName + "` ").append("FOREIGN KEY (`" + newFKName + "`) ") .append("REFERENCES `" + actualAppTableName + "` (`id`)"); } else { sqlBuilder = sqlBuilder.append("ALTER TABLE `" + datatableName + "` ") .append("DROP FOREIGN KEY `fk_" + oldConstraintName + "`,") - .append("CHANGE COLUMN `" + oldFKName + "` `" + newFKName + "` BIGINT(20) NOT NULL,") + .append("CHANGE COLUMN `" + oldFKName + "` `" + newFKName + "` BIGINT NOT NULL,") .append("ADD CONSTRAINT `fk_" + newConstraintName + "` ").append("FOREIGN KEY (`" + newFKName + "`) ") .append("REFERENCES `" + actualAppTableName + "` (`id`)"); } diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V101__add_mulitplesof_to_account_transfers_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V101__add_mulitplesof_to_account_transfers_table.sql index 31e92878b..e5fe90351 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V101__add_mulitplesof_to_account_transfers_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V101__add_mulitplesof_to_account_transfers_table.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_savings_account_transfer` -ADD COLUMN `currency_multiplesof` SMALLINT(5) NULL DEFAULT NULL AFTER `currency_digits`; \ No newline at end of file +ADD COLUMN `currency_multiplesof` SMALLINT NULL DEFAULT NULL AFTER `currency_digits`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V102__client_attendance_tables.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V102__client_attendance_tables.sql index d89305374..c6c36981d 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V102__client_attendance_tables.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V102__client_attendance_tables.sql @@ -18,8 +18,8 @@ -- CREATE TABLE `m_meeting` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `calendar_instance_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_instance_id` BIGINT NOT NULL, `meeting_date` DATE NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `unique_calendar_instance_id_meeting_date` (`calendar_instance_id`, `meeting_date`), @@ -29,17 +29,17 @@ COLLATE='latin1_swedish_ci' ENGINE=InnoDB; CREATE TABLE `m_client_attendance` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NOT NULL DEFAULT '0', - `meeting_id` BIGINT(20) NOT NULL, - `attendance_type_enum` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL DEFAULT '0', + `meeting_id` BIGINT NOT NULL, + `attendance_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `unique_client_meeting_attendance` (`client_id`, `meeting_id`), INDEX `FK_m_meeting_m_client_attendance` (`meeting_id`), CONSTRAINT `FK_m_client_m_client_attendance` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_meeting_m_client_attendance` FOREIGN KEY (`meeting_id`) REFERENCES `m_meeting` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V103__cluster_support_for_batch_jobs.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V103__cluster_support_for_batch_jobs.sql index 6bb19ee7d..7166fd93a 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V103__cluster_support_for_batch_jobs.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V103__cluster_support_for_batch_jobs.sql @@ -18,16 +18,16 @@ -- ALTER TABLE `job` - ADD COLUMN `is_misfired` TINYINT(1) NOT NULL DEFAULT '0' AFTER `scheduler_group`; + ADD COLUMN `is_misfired` tinyint NOT NULL DEFAULT '0' AFTER `scheduler_group`; CREATE TABLE `scheduler_detail` ( - `id` SMALLINT(2) NOT NULL AUTO_INCREMENT, - `is_suspended` TINYINT(1) NOT NULL DEFAULT '0', - `execute_misfired_jobs` TINYINT(1) NOT NULL DEFAULT '1', - `reset_scheduler_on_bootup` TINYINT(1) NOT NULL DEFAULT '1', + `id` SMALLINT NOT NULL AUTO_INCREMENT, + `is_suspended` tinyint NOT NULL DEFAULT '0', + `execute_misfired_jobs` tinyint NOT NULL DEFAULT '1', + `reset_scheduler_on_bootup` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; INSERT INTO `scheduler_detail` (`is_suspended`, `execute_misfired_jobs`, `reset_scheduler_on_bootup`) VALUES (FALSE,TRUE,TRUE); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V105__track_loan_transaction_against_office.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V105__track_loan_transaction_against_office.sql index 3fef60353..4a3de0fd9 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V105__track_loan_transaction_against_office.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V105__track_loan_transaction_against_office.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_loan_transaction` - ADD COLUMN `office_id` BIGINT(20) NULL DEFAULT NULL AFTER `loan_id`; + ADD COLUMN `office_id` BIGINT NULL DEFAULT NULL AFTER `loan_id`; /**update client loans**/ UPDATE m_loan_transaction lt set lt.office_id = (SELECT c.office_id AS officeId FROM m_loan l JOIN m_client c on l.client_id=c.id where l.id=lt.loan_id) where lt.loan_id in (Select l.id from m_loan l where l.client_id is not null); @@ -28,7 +28,7 @@ UPDATE m_loan_transaction lt set lt.office_id = (SELECT g.office_id AS officeId /**Add foreign key constraints**/ ALTER TABLE `m_loan_transaction` - CHANGE COLUMN `office_id` `office_id` BIGINT(20) NOT NULL AFTER `loan_id`; + CHANGE COLUMN `office_id` `office_id` BIGINT NOT NULL AFTER `loan_id`; ALTER TABLE `m_loan_transaction` ADD CONSTRAINT `FK_m_loan_transaction_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V107__datatable_code_mappings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V107__datatable_code_mappings.sql index b4046f5ac..448cc60ca 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V107__datatable_code_mappings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V107__datatable_code_mappings.sql @@ -19,12 +19,12 @@ CREATE TABLE `x_table_cloumn_code_mappings` ( `column_alias_name` VARCHAR(50) NOT NULL, - `code_id` INT(10) NOT NULL, + `code_id` INT NOT NULL, PRIMARY KEY (`column_alias_name`), INDEX `FK_x_code_id` (`code_id`), CONSTRAINT `FK_x_code_id` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; INSERT INTO `c_configuration` (`name`, `enabled`) VALUES ('constraint_approach_for_datatables', 1); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V108__client_has_transfer_office.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V108__client_has_transfer_office.sql index e14804ba4..61bb74fb8 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V108__client_has_transfer_office.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V108__client_has_transfer_office.sql @@ -20,7 +20,7 @@ /***Store destination office Id while client is pending transfers and effective joining date in a particular branch**/ ALTER TABLE `m_client` ADD COLUMN `office_joining_date` DATE NULL AFTER `activation_date`, - ADD COLUMN `transfer_to_office_id` BIGINT(20) NULL AFTER `office_id`, + ADD COLUMN `transfer_to_office_id` BIGINT NULL AFTER `office_id`, ADD CONSTRAINT `FK_m_client_m_office` FOREIGN KEY (`transfer_to_office_id`) REFERENCES `m_office` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V10__interest-posting-fields-for-savings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V10__interest-posting-fields-for-savings.sql index eaa0c50dc..e73f71dc3 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V10__interest-posting-fields-for-savings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V10__interest-posting-fields-for-savings.sql @@ -24,8 +24,8 @@ VALUES ALTER TABLE `m_savings_product` -ADD COLUMN `interest_posting_period_enum` SMALLINT(5) NOT NULL DEFAULT 4 AFTER `interest_compounding_period_enum`; +ADD COLUMN `interest_posting_period_enum` SMALLINT NOT NULL DEFAULT 4 AFTER `interest_compounding_period_enum`; ALTER TABLE `m_savings_account` -ADD COLUMN `interest_posting_period_enum` SMALLINT(5) NOT NULL DEFAULT 4 AFTER `interest_compounding_period_enum`; \ No newline at end of file +ADD COLUMN `interest_posting_period_enum` SMALLINT NOT NULL DEFAULT 4 AFTER `interest_compounding_period_enum`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V110__group_center_close.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V110__group_center_close.sql index e71a918fa..1986e5eea 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V110__group_center_close.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V110__group_center_close.sql @@ -19,7 +19,7 @@ INSERT INTO `m_code` (`code_name`, `is_system_defined`) VALUES ('GroupClosureReason', 1); -ALTER TABLE `m_group` ADD COLUMN `closure_reason_cv_id` INT(11) NULL DEFAULT NULL, +ALTER TABLE `m_group` ADD COLUMN `closure_reason_cv_id` INT NULL DEFAULT NULL, ADD COLUMN `closedon_date` DATE NULL DEFAULT NULL, ADD CONSTRAINT `FK_m_group_m_code` FOREIGN KEY (`closure_reason_cv_id`) REFERENCES `m_code_value` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V112__mixreport_sql_support.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V112__mixreport_sql_support.sql index c34ffd00f..baffb9c32 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V112__mixreport_sql_support.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V112__mixreport_sql_support.sql @@ -23,15 +23,15 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c DROP TABLE IF EXISTS `mix_taxonomy`; CREATE TABLE `mix_taxonomy` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, - `namespace_id` int(11) DEFAULT NULL, + `namespace_id` INT DEFAULT NULL, `dimension` varchar(100) DEFAULT NULL, - `type` int(11) DEFAULT NULL, + `type` INT DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, - `need_mapping` tinyint(1) DEFAULT NULL, + `need_mapping` tinyint DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; LOCK TABLES `mix_taxonomy` WRITE; @@ -92,13 +92,13 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `mix_taxonomy_mapping`; CREATE TABLE `mix_taxonomy_mapping` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `identifier` varchar(50) NOT NULL DEFAULT '', `config` varchar(200) DEFAULT NULL, `last_update_date` datetime DEFAULT NULL, `currency` varchar(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; LOCK TABLES `mix_taxonomy_mapping` WRITE; @@ -111,12 +111,12 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `mix_xbrl_namespace`; CREATE TABLE `mix_xbrl_namespace` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `prefix` varchar(20) NOT NULL DEFAULT '', `url` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNQUE` (`prefix`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; LOCK TABLES `mix_xbrl_namespace` WRITE; @@ -124,9 +124,9 @@ INSERT INTO `mix_xbrl_namespace` (`id`, `prefix`, `url`) VALUES (1,'ifrs','http://xbrl.iasb.org/taxonomy/2009-04-01/ifrs'), (2,'iso4217','http://www.xbrl.org/2003/iso4217'), - (3,'mix','http://www.themix.org/int/fr/ifrs/basi/YYYY-MM-DD/mx-cor'), + (3,'mix','http://www.themix.org/INT/fr/ifrs/basi/YYYY-MM-DD/mx-cor'), (4,'xbrldi','http://xbrl.org/2006/xbrldi'), (5,'xbrli','http://www.xbrl.org/2003/instance'), (6,'link','http://www.xbrl.org/2003/linkbase'), - (7,'dc-all','http://www.themix.org/int/fr/ifrs/basi/2010-08-31/dc-all'); + (7,'dc-all','http://www.themix.org/INT/fr/ifrs/basi/2010-08-31/dc-all'); UNLOCK TABLES; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V113__track_savings_transaction_against_office.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V113__track_savings_transaction_against_office.sql index 8c0474b40..7ab8ca347 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V113__track_savings_transaction_against_office.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V113__track_savings_transaction_against_office.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_savings_account_transaction` - ADD COLUMN `office_id` BIGINT(20) NULL DEFAULT NULL AFTER `savings_account_id`; + ADD COLUMN `office_id` BIGINT NULL DEFAULT NULL AFTER `savings_account_id`; /**update client savings**/ UPDATE m_savings_account_transaction st set st.office_id = (SELECT c.office_id AS officeId FROM m_savings_account sa JOIN m_client c on sa.client_id=c.id where sa.id=st.savings_account_id) where st.savings_account_id in (Select sa.id from m_savings_account sa where sa.client_id is not null); @@ -28,7 +28,7 @@ UPDATE m_savings_account_transaction st set st.office_id = (SELECT g.office_id A /**Add foreign key constraints**/ ALTER TABLE `m_savings_account_transaction` - CHANGE COLUMN `office_id` `office_id` BIGINT(20) NOT NULL AFTER `savings_account_id`; + CHANGE COLUMN `office_id` `office_id` BIGINT NOT NULL AFTER `savings_account_id`; ALTER TABLE `m_savings_account_transaction` ADD CONSTRAINT `FK_m_savings_account_transaction_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V115__permissions_for_cache_api.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V115__permissions_for_cache_api.sql index dec8daefe..8e18e281e 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V115__permissions_for_cache_api.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V115__permissions_for_cache_api.sql @@ -19,10 +19,10 @@ DROP TABLE IF EXISTS `c_cache`; CREATE TABLE `c_cache` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cache_type_enum` tinyint(1) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `cache_type_enum` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; INSERT INTO `c_cache` diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V117__loan_charge_from_savings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V117__loan_charge_from_savings.sql index 749f51d26..b2dd15cc9 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V117__loan_charge_from_savings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V117__loan_charge_from_savings.sql @@ -29,14 +29,14 @@ CREATE TABLE `m_portfolio_account_associations` ( CONSTRAINT `linked_loan_fk` FOREIGN KEY (`linked_loan_account_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `linked_savings_fk` FOREIGN KEY (`linked_savings_account_id`) REFERENCES `m_savings_account` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; ALTER TABLE `m_charge` - ADD COLUMN `charge_payment_mode_enum` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `charge_calculation_enum`; + ADD COLUMN `charge_payment_mode_enum` SMALLINT NOT NULL DEFAULT '0' AFTER `charge_calculation_enum`; ALTER TABLE `m_loan_charge` - ADD COLUMN `charge_payment_mode_enum` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `charge_calculation_enum`; + ADD COLUMN `charge_payment_mode_enum` SMALLINT NOT NULL DEFAULT '0' AFTER `charge_calculation_enum`; INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('transaction_loan', 'PAY_LOANCHARGE', 'LOANCHARGE', 'PAY', 0); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V118_7__move_withdrawal_annual_fee_to_charges.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V118_7__move_withdrawal_annual_fee_to_charges.sql index 300fb58c8..4a414b761 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V118_7__move_withdrawal_annual_fee_to_charges.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V118_7__move_withdrawal_annual_fee_to_charges.sql @@ -21,9 +21,9 @@ ALTER TABLE `m_savings_account_charge` CHANGE COLUMN `due_for_collection_as_of_date` `charge_due_date` DATE NULL DEFAULT NULL AFTER `charge_time_enum`; ALTER TABLE `m_savings_account_charge` - ADD COLUMN `fee_on_month` SMALLINT(5) NULL DEFAULT NULL AFTER `charge_due_date`, - ADD COLUMN `fee_on_day` SMALLINT(5) NULL DEFAULT NULL AFTER `fee_on_month`, - ADD COLUMN `is_active` TINYINT(1) NOT NULL DEFAULT '1' AFTER `waived`; + ADD COLUMN `fee_on_month` SMALLINT NULL DEFAULT NULL AFTER `charge_due_date`, + ADD COLUMN `fee_on_day` SMALLINT NULL DEFAULT NULL AFTER `fee_on_month`, + ADD COLUMN `is_active` tinyint NOT NULL DEFAULT '1' AFTER `waived`; delimiter // @@ -31,19 +31,19 @@ CREATE PROCEDURE migrate_withdrwal_fees() begin declare no_more_rows boolean default false; declare v_currency_code VARCHAR(3); - declare v_withdrawal_fee_type_enum SMALLINT(5); + declare v_withdrawal_fee_type_enum SMALLINT; declare v_withdrawal_fee_amount_charge_def DECIMAL(19,6); - declare v_account_id BIGINT(20); + declare v_account_id BIGINT; declare v_withdrawal_fee_amount DECIMAL(19,6); declare t_calculation_percentage DECIMAL(19,6); declare t_calculation_on_amount DECIMAL(19,6); declare t_withdrawal_fee_name VARCHAR(100); - declare t_charge_id BIGINT(20); - declare t_savings_charge_id BIGINT(20); + declare t_charge_id BIGINT; + declare t_savings_charge_id BIGINT; -- savings transaction variables - declare v_savings_transaction_id BIGINT(20); + declare v_savings_transaction_id BIGINT; declare v_transaction_amount DECIMAL(19,6); @@ -148,17 +148,17 @@ begin declare no_more_rows boolean default false; declare v_currency_code VARCHAR(3); declare v_annual_fee_amount_charge_def DECIMAL(19,6); - declare v_account_id BIGINT(20); + declare v_account_id BIGINT; declare v_annual_fee_amount DECIMAL(19,6); - declare v_annual_fee_on_month SMALLINT(5); - declare v_annual_fee_on_day SMALLINT(5); + declare v_annual_fee_on_month SMALLINT; + declare v_annual_fee_on_day SMALLINT; declare v_annual_fee_next_due_date DATE; declare t_annual_fee_name VARCHAR(100); - declare t_charge_id BIGINT(20); - declare t_savings_charge_id BIGINT(20); + declare t_charge_id BIGINT; + declare t_savings_charge_id BIGINT; -- savings transaction variables - declare v_savings_transaction_id BIGINT(20); + declare v_savings_transaction_id BIGINT; declare v_transaction_amount DECIMAL(19,6); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V118__savings_charge.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V118__savings_charge.sql index eb80cdbdd..afba09d58 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V118__savings_charge.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V118__savings_charge.sql @@ -18,13 +18,13 @@ -- CREATE TABLE `m_savings_account_charge` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` BIGINT(20) NOT NULL, - `charge_id` BIGINT(20) NOT NULL, - `is_penalty` TINYINT(1) NOT NULL DEFAULT '0', - `charge_time_enum` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` DATE NULL DEFAULT NULL, - `charge_calculation_enum` SMALLINT(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` DECIMAL(19,6) NULL DEFAULT NULL, `calculation_on_amount` DECIMAL(19,6) NULL DEFAULT NULL, `amount` DECIMAL(19,6) NOT NULL, @@ -32,26 +32,26 @@ CREATE TABLE `m_savings_account_charge` ( `amount_waived_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_writtenoff_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_outstanding_derived` DECIMAL(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` TINYINT(1) NOT NULL DEFAULT '0', - `waived` TINYINT(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), INDEX `charge_id` (`charge_id`), INDEX `m_savings_account_charge_ibfk_2` (`savings_account_id`), CONSTRAINT `m_savings_account_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_savings_account_charge_ibfk_2` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) ) -ENGINE=InnoDB DEFAULT CHARSET=utf8; +ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_savings_product_charge` ( - `savings_product_id` BIGINT(20) NOT NULL, - `charge_id` BIGINT(20) NOT NULL, + `savings_product_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`savings_product_id`, `charge_id`), INDEX `charge_id` (`charge_id`), CONSTRAINT `m_savings_product_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_savings_product_charge_ibfk_2` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) ) -ENGINE=InnoDB DEFAULT CHARSET=utf8; +ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; @@ -69,9 +69,9 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c CREATE TABLE `m_savings_account_charge_paid_by` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `savings_account_transaction_id` BIGINT(20) NOT NULL, - `savings_account_charge_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_transaction_id` BIGINT NOT NULL, + `savings_account_charge_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, PRIMARY KEY (`id`), INDEX `FK__m_savings_account_transaction` (`savings_account_transaction_id`), @@ -79,5 +79,5 @@ CREATE TABLE `m_savings_account_charge_paid_by` ( CONSTRAINT `FK__m_savings_account_charge` FOREIGN KEY (`savings_account_charge_id`) REFERENCES `m_savings_account_charge` (`id`), CONSTRAINT `FK__m_savings_account_transaction` FOREIGN KEY (`savings_account_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V119__add_template_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V119__add_template_table.sql index 6eff29cb2..3c40077d5 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V119__add_template_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V119__add_template_table.sql @@ -19,32 +19,32 @@ DROP TABLE IF EXISTS `m_template`; CREATE TABLE `m_template` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `text` longtext COLLATE utf8_unicode_ci NOT NULL, - `entity` int(11) DEFAULT NULL, - `type` int(11) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `text` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `entity` INT DEFAULT NULL, + `type` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; DROP TABLE IF EXISTS `m_templatemappers`; CREATE TABLE `m_templatemappers` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `mapperkey` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `mapperorder` int(11) DEFAULT NULL, - `mappervalue` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `mapperkey` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `mapperorder` INT DEFAULT NULL, + `mappervalue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; DROP TABLE IF EXISTS `m_template_m_templatemappers`; CREATE TABLE `m_template_m_templatemappers` ( - `m_template_id` bigint(20) NOT NULL, - `mappers_id` bigint(20) NOT NULL, + `m_template_id` BIGINT NOT NULL, + `mappers_id` BIGINT NOT NULL, UNIQUE KEY `mappers_id` (`mappers_id`), KEY (`mappers_id`), KEY (`m_template_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('organistion', 'DELETE_TEMPLATE', 'TEMPLATE', 'DELETE', 0), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V11__add-payment-details.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V11__add-payment-details.sql index dd199b652..09331004e 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V11__add-payment-details.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V11__add-payment-details.sql @@ -22,8 +22,8 @@ New table for storing transaction details (for both loan and savings) */ CREATE TABLE `m_payment_detail` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `payment_type_enum` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `payment_type_enum` SMALLINT NOT NULL, `account_number` VARCHAR(100) NULL DEFAULT NULL, `check_number` VARCHAR(100) NULL DEFAULT NULL, `receipt_number` VARCHAR(100) NULL DEFAULT NULL, @@ -31,7 +31,7 @@ CREATE TABLE `m_payment_detail` ( `routing_code` VARCHAR(100) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; /* @@ -39,5 +39,5 @@ Update loan transaction to add a link to transaction detail table */ ALTER TABLE `m_loan_transaction` - ADD COLUMN `payment_detail_id` BIGINT(20) NULL AFTER `loan_id`, + ADD COLUMN `payment_detail_id` BIGINT NULL AFTER `loan_id`, ADD CONSTRAINT `FK_m_loan_transaction_m_payment_detail` FOREIGN KEY (`payment_detail_id`) REFERENCES `m_payment_detail` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V122__recurring_fee_support_for_savings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V122__recurring_fee_support_for_savings.sql index 67ce97c7f..c00dcda45 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V122__recurring_fee_support_for_savings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V122__recurring_fee_support_for_savings.sql @@ -18,10 +18,10 @@ -- ALTER TABLE `m_charge` - ADD COLUMN `fee_on_day` SMALLINT(5) NULL AFTER `amount`, - ADD COLUMN `fee_interval` SMALLINT(5) NULL AFTER `fee_on_day`, - ADD COLUMN `fee_on_month` SMALLINT(5) NULL AFTER `fee_interval`; + ADD COLUMN `fee_on_day` SMALLINT NULL AFTER `amount`, + ADD COLUMN `fee_interval` SMALLINT NULL AFTER `fee_on_day`, + ADD COLUMN `fee_on_month` SMALLINT NULL AFTER `fee_interval`; ALTER TABLE `m_savings_account_charge` - ADD COLUMN `fee_interval` SMALLINT(5) NULL DEFAULT NULL AFTER `fee_on_day`; \ No newline at end of file + ADD COLUMN `fee_interval` SMALLINT NULL DEFAULT NULL AFTER `fee_on_day`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V123__remove_payment_mode_for_savings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V123__remove_payment_mode_for_savings.sql index e78e77dc4..74494c00c 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V123__remove_payment_mode_for_savings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V123__remove_payment_mode_for_savings.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_charge` - CHANGE COLUMN `charge_payment_mode_enum` `charge_payment_mode_enum` SMALLINT(5) NULL DEFAULT NULL AFTER `charge_calculation_enum`; \ No newline at end of file + CHANGE COLUMN `charge_payment_mode_enum` `charge_payment_mode_enum` SMALLINT NULL DEFAULT NULL AFTER `charge_calculation_enum`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V126__initial_database_structure_for_sms_outbound.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V126__initial_database_structure_for_sms_outbound.sql index d629a9ff8..441913c75 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V126__initial_database_structure_for_sms_outbound.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V126__initial_database_structure_for_sms_outbound.sql @@ -19,11 +19,11 @@ DROP TABLE IF EXISTS `sms_messages_outbound`; CREATE TABLE `sms_messages_outbound` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `status_enum` int(5) NOT NULL DEFAULT '100', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT DEFAULT NULL, + `status_enum` INT NOT NULL DEFAULT '100', `mobile_no` varchar(50) NOT NULL, `message` varchar(1000) NOT NULL, PRIMARY KEY (`id`), @@ -32,7 +32,7 @@ CREATE TABLE `sms_messages_outbound` ( CONSTRAINT `FKGROUP000000001` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKCLIENT00000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSTAFF000000001` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Permissions for CRUD on SMS outbound message tracking DELETE FROM `m_permission` WHERE `entity_name`='SMS'; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V128__added_loan_installment_charge.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V128__added_loan_installment_charge.sql index 225125667..fe7456af8 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V128__added_loan_installment_charge.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V128__added_loan_installment_charge.sql @@ -18,21 +18,21 @@ -- CREATE TABLE `m_loan_installment_charge` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` BIGINT(20) NOT NULL, - `loan_schedule_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `loan_schedule_id` BIGINT NOT NULL, `due_date` DATE NULL DEFAULT NULL, `amount` DECIMAL(19,6) NOT NULL, `amount_paid_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_waived_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_writtenoff_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_outstanding_derived` DECIMAL(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` TINYINT(1) NOT NULL DEFAULT '0', - `waived` TINYINT(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', `amount_through_charge_payment` DECIMAL(19,6) NULL DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_loan_charge_id_charge_schedule` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK_loan_schedule_id_charge_schedule` FOREIGN KEY (`loan_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V129__client_and_group_timeline.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V129__client_and_group_timeline.sql index f583b19f4..549c1f1f2 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V129__client_and_group_timeline.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V129__client_and_group_timeline.sql @@ -18,11 +18,11 @@ -- ALTER TABLE `m_client` ADD `submittedon_date` DATE NULL DEFAULT NULL , -ADD `submittedon_userid` BIGINT( 20 ) NULL DEFAULT NULL , -ADD `activatedon_userid` BIGINT( 20 ) NULL DEFAULT NULL , -ADD `closedon_userid` BIGINT( 20 ) NULL DEFAULT NULL ; +ADD `submittedon_userid` BIGINT NULL DEFAULT NULL , +ADD `activatedon_userid` BIGINT NULL DEFAULT NULL , +ADD `closedon_userid` BIGINT NULL DEFAULT NULL ; -ALTER TABLE `m_group` ADD `activatedon_userid` BIGINT( 20 ) NULL , +ALTER TABLE `m_group` ADD `activatedon_userid` BIGINT NULL , ADD `submittedon_date` DATE NULL , -ADD `submittedon_userid` BIGINT( 20 ) NULL , -ADD `closedon_userid` BIGINT( 20 ) NULL ; \ No newline at end of file +ADD `submittedon_userid` BIGINT NULL , +ADD `closedon_userid` BIGINT NULL ; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V12__add_external_id_to_couple_of_tables.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V12__add_external_id_to_couple_of_tables.sql index fe83e44f0..6827655df 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V12__add_external_id_to_couple_of_tables.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V12__add_external_id_to_couple_of_tables.sql @@ -38,8 +38,8 @@ ALTER TABLE m_staff */ ALTER TABLE m_client - ADD COLUMN `status_id` INT(5) NOT NULL DEFAULT 300 AFTER `is_deleted` ; + ADD COLUMN `status_id` INT NOT NULL DEFAULT 300 AFTER `is_deleted` ; ALTER TABLE m_group - ADD COLUMN `status_id` INT(5) NOT NULL DEFAULT 300 AFTER `is_deleted` ; + ADD COLUMN `status_id` INT NOT NULL DEFAULT 300 AFTER `is_deleted` ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V130__calendar-history-table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V130__calendar-history-table.sql index f0ccb59ea..1c95c393f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V130__calendar-history-table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V130__calendar-history-table.sql @@ -18,20 +18,20 @@ -- CREATE TABLE `m_calendar_history` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `calendar_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, `title` VARCHAR(50) NOT NULL, `description` VARCHAR(100) NULL DEFAULT NULL, `location` VARCHAR(50) NULL DEFAULT NULL, `start_date` DATE NOT NULL, `end_date` DATE NULL DEFAULT NULL, - `duration` SMALLINT(6) NULL DEFAULT NULL, - `calendar_type_enum` SMALLINT(5) NOT NULL, - `repeating` TINYINT(1) NOT NULL DEFAULT '0', + `duration` SMALLINT NULL DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` VARCHAR(100) NULL DEFAULT NULL, - `remind_by_enum` SMALLINT(5) NULL DEFAULT NULL, - `first_reminder` SMALLINT(11) NULL DEFAULT NULL, - `second_reminder` SMALLINT(11) NULL DEFAULT NULL, + `remind_by_enum` SMALLINT NULL DEFAULT NULL, + `first_reminder` SMALLint NULL DEFAULT NULL, + `second_reminder` SMALLint NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `FK_m_calendar_m_calendar_history` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_history` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V131__holiday-status-column-and-permissions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V131__holiday-status-column-and-permissions.sql index a7ae7d796..33891fa43 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V131__holiday-status-column-and-permissions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V131__holiday-status-column-and-permissions.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_holiday` - ADD COLUMN `status_enum` INT(5) NOT NULL DEFAULT '100' AFTER `repayments_rescheduled_to`; + ADD COLUMN `status_enum` INT NOT NULL DEFAULT '100' AFTER `repayments_rescheduled_to`; ALTER TABLE `m_holiday` DROP INDEX `holiday_name`, diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V132__borrower_cycle_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V132__borrower_cycle_changes.sql index d29fb8643..60f4f7f36 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V132__borrower_cycle_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V132__borrower_cycle_changes.sql @@ -18,11 +18,11 @@ -- CREATE TABLE `m_product_loan_variations_borrower_cycle` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` BIGINT(20) NOT NULL DEFAULT '0', - `borrower_cycle_number` INT(3) NOT NULL DEFAULT '0', - `value_condition` INT(1) NOT NULL DEFAULT '0', - `param_type` INT(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL DEFAULT '0', + `borrower_cycle_number` INT NOT NULL DEFAULT '0', + `value_condition` INT NOT NULL DEFAULT '0', + `param_type` INT NOT NULL DEFAULT '0', `default_value` DECIMAL(19,6) NOT NULL DEFAULT '0.000000', `max_value` DECIMAL(19,6) NULL DEFAULT NULL, `min_value` DECIMAL(19,6) NULL DEFAULT NULL, @@ -30,9 +30,9 @@ CREATE TABLE `m_product_loan_variations_borrower_cycle` ( INDEX `borrower_cycle_loan_product_FK` (`loan_product_id`), CONSTRAINT `borrower_cycle_loan_product_FK` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; ALTER TABLE `m_product_loan` - ADD COLUMN `use_borrower_cycle` TINYINT(1) NOT NULL DEFAULT '0' AFTER `include_in_borrower_cycle`; \ No newline at end of file + ADD COLUMN `use_borrower_cycle` tinyint NOT NULL DEFAULT '0' AFTER `include_in_borrower_cycle`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V133__adding_payment_detail_with_journal_entry.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V133__adding_payment_detail_with_journal_entry.sql index 117807856..cdb0364dd 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V133__adding_payment_detail_with_journal_entry.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V133__adding_payment_detail_with_journal_entry.sql @@ -18,8 +18,8 @@ -- ALTER TABLE `acc_gl_journal_entry` - ADD COLUMN `loan_transaction_id` BIGINT(20) NULL AFTER `transaction_id`, - ADD COLUMN `savings_transaction_id` BIGINT(20) NULL AFTER `loan_transaction_id`, + ADD COLUMN `loan_transaction_id` BIGINT NULL AFTER `transaction_id`, + ADD COLUMN `savings_transaction_id` BIGINT NULL AFTER `loan_transaction_id`, ADD CONSTRAINT `FK_acc_gl_journal_entry_m_loan_transaction` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`), ADD CONSTRAINT `FK_acc_gl_journal_entry_m_savings_account_transaction` FOREIGN KEY (`savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V136_1__update_script_strechy_parameter.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V136_1__update_script_strechy_parameter.sql index 83854622c..b7916a84e 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V136_1__update_script_strechy_parameter.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V136_1__update_script_strechy_parameter.sql @@ -17,4 +17,4 @@ -- under the License. -- -UPDATE stretchy_parameter SET `parameter_sql`='select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere (p.currency_code = \'${currencyId}\' or \'-1\'= \'${currencyId}\')\r\norder by 2' WHERE parameter_name='loanProductIdSelectAll'; \ No newline at end of file +UPDATE stretchy_parameter SET `parameter_sql`='select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere (p.currency_code = \'$\{currencyId}\' or \'-1\'= \'$\{currencyId}\')\r\norder by 2' WHERE parameter_name='loanProductIdSelectAll'; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V137__added_is_active_column_in_m_staff.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V137__added_is_active_column_in_m_staff.sql index 46093c63c..b074f8240 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V137__added_is_active_column_in_m_staff.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V137__added_is_active_column_in_m_staff.sql @@ -17,4 +17,4 @@ -- under the License. -- -ALTER TABLE `m_staff` ADD COLUMN `is_active` TINYINT(1) DEFAULT '0' AFTER `organisational_role_parent_staff_id`; \ No newline at end of file +ALTER TABLE `m_staff` ADD COLUMN `is_active` tinyint DEFAULT '0' AFTER `organisational_role_parent_staff_id`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V139__default_value_for_is_active_updated_to_true_in_m_staff.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V139__default_value_for_is_active_updated_to_true_in_m_staff.sql index 22fea7954..38cad1de9 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V139__default_value_for_is_active_updated_to_true_in_m_staff.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V139__default_value_for_is_active_updated_to_true_in_m_staff.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `m_staff` - CHANGE COLUMN `is_active` `is_active` TINYINT(1) NOT NULL DEFAULT '1' AFTER `organisational_role_parent_staff_id`; + CHANGE COLUMN `is_active` `is_active` tinyint NOT NULL DEFAULT '1' AFTER `organisational_role_parent_staff_id`; UPDATE `m_staff` SET `is_active`=1; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V140_1__added_payment_detail_id_in_ac_gl_journal_entry.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V140_1__added_payment_detail_id_in_ac_gl_journal_entry.sql index 7517d315f..a0d0c7d1e 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V140_1__added_payment_detail_id_in_ac_gl_journal_entry.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V140_1__added_payment_detail_id_in_ac_gl_journal_entry.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `acc_gl_journal_entry` - ADD COLUMN `payment_details_id` BIGINT(20) NULL AFTER `organization_running_balance`, + ADD COLUMN `payment_details_id` BIGINT NULL AFTER `organization_running_balance`, ADD CONSTRAINT `FK_acc_gl_journal_entry_m_payment_detail` FOREIGN KEY (`payment_details_id`) REFERENCES `m_payment_detail` (`id`); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V140__added_loan_charge_status.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V140__added_loan_charge_status.sql index 431bf2e56..fc663d9ed 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V140__added_loan_charge_status.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V140__added_loan_charge_status.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_loan_charge` - ADD COLUMN `is_active` TINYINT(1) NOT NULL DEFAULT '1' AFTER `max_cap`; \ No newline at end of file + ADD COLUMN `is_active` tinyint NOT NULL DEFAULT '1' AFTER `max_cap`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V144__spelling_mistake_corrections.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V144__spelling_mistake_corrections.sql index 19509bb6c..7c9b3cb26 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V144__spelling_mistake_corrections.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V144__spelling_mistake_corrections.sql @@ -20,4 +20,4 @@ RENAME TABLE `x_table_cloumn_code_mappings` TO `x_table_column_code_mappings`; ALTER TABLE `acc_gl_journal_entry` - CHANGE COLUMN `is_running_balance_caculated` `is_running_balance_calculated` TINYINT(4) NOT NULL DEFAULT '0' AFTER `lastmodified_date`; \ No newline at end of file + CHANGE COLUMN `is_running_balance_caculated` `is_running_balance_calculated` TINYINT NOT NULL DEFAULT '0' AFTER `lastmodified_date`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V145__add_force_password_reset_in_c_configuration.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V145__add_force_password_reset_in_c_configuration.sql index 8a2a69880..df7370db5 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V145__add_force_password_reset_in_c_configuration.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V145__add_force_password_reset_in_c_configuration.sql @@ -25,8 +25,8 @@ ADD INDEX ( `last_time_password_updated` ) ; UPDATE `m_appuser` SET `last_time_password_updated` = NOW() WHERE `m_appuser`.`last_time_password_updated` ='1970-01-01'; CREATE TABLE IF NOT EXISTS `m_appuser_previous_password` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `user_id` BIGINT NOT NULL, `password` varchar(255) NOT NULL, `removal_date` date NOT NULL, PRIMARY KEY (`id`) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V146__tranche_loans.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V146__tranche_loans.sql index f76a0fea4..f8a48b15a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V146__tranche_loans.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V146__tranche_loans.sql @@ -18,13 +18,13 @@ -- ALTER TABLE `m_product_loan` - ADD COLUMN `multi_disburse_loan` TINYINT(1) NOT NULL DEFAULT '0' AFTER `close_date`, - ADD COLUMN `max_tranche_count` INT(2) NULL DEFAULT NULL AFTER `multi_disburse_loan`, + ADD COLUMN `multi_disburse_loan` tinyint NOT NULL DEFAULT '0' AFTER `close_date`, + ADD COLUMN `max_tranche_count` INT NULL DEFAULT NULL AFTER `multi_disburse_loan`, ADD COLUMN `outstanding_loan_balance` DECIMAL(19,6) NULL DEFAULT NULL AFTER `max_tranche_count`; CREATE TABLE `m_loan_disbursement_detail` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `expected_disburse_date` DATETIME NOT NULL, `disbursedon_date` DATETIME NULL, `principal` DECIMAL(19,6) NOT NULL, @@ -32,7 +32,7 @@ CREATE TABLE `m_loan_disbursement_detail` ( PRIMARY KEY (`id`), CONSTRAINT `FK_loan_disbursement_detail_loan_id` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; ALTER TABLE `m_loan` @@ -45,13 +45,13 @@ UPDATE m_loan ml SET ml.approved_principal = ml.principal_amount; INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('portfolio', 'UPDATE_DISBURSEMENTDETAIL', 'DISBURSEMENTDETAIL', 'UPDATE', 0); CREATE TABLE `m_loan_term_variations` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_id` BIGINT(20) NOT NULL, - `term_type` SMALLINT(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `term_type` SMALLINT NOT NULL, `applicable_from` DATE NOT NULL, `term_value` DECIMAL(19,6) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_loan_id_m_loan_id` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V147__tranche_loans_column_name_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V147__tranche_loans_column_name_changes.sql index 994ec6172..c824a5ff9 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V147__tranche_loans_column_name_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V147__tranche_loans_column_name_changes.sql @@ -18,6 +18,6 @@ -- ALTER TABLE `m_product_loan` - CHANGE COLUMN `multi_disburse_loan` `allow_multiple_disbursals` TINYINT(1) NOT NULL DEFAULT '0' AFTER `close_date`, - CHANGE COLUMN `max_tranche_count` `max_disbursals` INT(2) NULL DEFAULT NULL AFTER `allow_multiple_disbursals`, + CHANGE COLUMN `multi_disburse_loan` `allow_multiple_disbursals` tinyint NOT NULL DEFAULT '0' AFTER `close_date`, + CHANGE COLUMN `max_tranche_count` `max_disbursals` INT NULL DEFAULT NULL AFTER `allow_multiple_disbursals`, CHANGE COLUMN `outstanding_loan_balance` `max_outstanding_loan_balance` DECIMAL(19,6) NULL DEFAULT NULL AFTER `max_disbursals`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V148__overdraft_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V148__overdraft_changes.sql index a4b5dafe9..38527130e 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V148__overdraft_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V148__overdraft_changes.sql @@ -18,16 +18,16 @@ -- ALTER TABLE `m_savings_product` - ADD COLUMN `allow_overdraft` TINYINT(1) NOT NULL DEFAULT '0' AFTER `withdrawal_fee_for_transfer`, + ADD COLUMN `allow_overdraft` tinyint NOT NULL DEFAULT '0' AFTER `withdrawal_fee_for_transfer`, ADD COLUMN `overdraft_limit` DECIMAL(19,6) NULL DEFAULT NULL AFTER `allow_overdraft`; ALTER TABLE `m_savings_account` - ADD COLUMN `allow_overdraft` TINYINT(1) NOT NULL DEFAULT '0' AFTER `withdrawal_fee_for_transfer`, + ADD COLUMN `allow_overdraft` tinyint NOT NULL DEFAULT '0' AFTER `withdrawal_fee_for_transfer`, ADD COLUMN `overdraft_limit` DECIMAL(19,6) NULL DEFAULT NULL AFTER `allow_overdraft`; ALTER TABLE `m_savings_account_transaction` ADD COLUMN `overdraft_amount_derived` DECIMAL(19,6) NULL DEFAULT NULL AFTER `amount`; ALTER TABLE `m_client` - ADD COLUMN `default_savings_product` BIGINT(20) NULL DEFAULT NULL AFTER `closedon_userid`, + ADD COLUMN `default_savings_product` BIGINT NULL DEFAULT NULL AFTER `closedon_userid`, ADD CONSTRAINT `FK_m_client_m_savings_product` FOREIGN KEY (`default_savings_product`) REFERENCES `m_savings_product` (`id`); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V14__rename_status_id_to_enum.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V14__rename_status_id_to_enum.sql index 2e77a20bd..50f36dd15 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V14__rename_status_id_to_enum.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V14__rename_status_id_to_enum.sql @@ -18,9 +18,9 @@ -- -ALTER TABLE m_group CHANGE COLUMN `status_id` `status_enum` INT(5) NOT NULL DEFAULT '300' ; +ALTER TABLE m_group CHANGE COLUMN `status_id` `status_enum` INT NOT NULL DEFAULT '300' ; -ALTER TABLE m_client CHANGE COLUMN `status_id` `status_enum` INT(5) NOT NULL DEFAULT '300' ; +ALTER TABLE m_client CHANGE COLUMN `status_id` `status_enum` INT NOT NULL DEFAULT '300' ; update r_enum_value set enum_name = 'status_enum' diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V150__basic_savings_report.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V150__basic_savings_report.sql index ba907dd93..be615354b 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V150__basic_savings_report.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V150__basic_savings_report.sql @@ -32,7 +32,7 @@ INSERT INTO `stretchy_report_parameter` (`report_id`, `parameter_id`, `report_pa INSERT INTO `stretchy_report_parameter` (`report_id`, `parameter_id`, `report_parameter_name`) VALUES ((select id from stretchy_report where report_name = 'Client Savings Summary'), (select id from stretchy_parameter where parameter_name='savingsProductIdSelectAll'), 'selectProduct'); ALTER TABLE `r_enum_value` - ADD COLUMN `enum_type` TINYINT(1) NOT NULL AFTER `enum_value`; + ADD COLUMN `enum_type` tinyint NOT NULL AFTER `enum_value`; INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`, `enum_type`) VALUES ('savings_transaction_type_enum', 1, 'deposit', 'deposit', 0); INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`, `enum_type`) VALUES ('savings_transaction_type_enum', 2, 'withdrawal', 'withdrawal', 1); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V151__add_default_savings_account_to_client.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V151__add_default_savings_account_to_client.sql index 3da2169b5..7879a0676 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V151__add_default_savings_account_to_client.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V151__add_default_savings_account_to_client.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_client` - ADD COLUMN `default_savings_account` BIGINT(20) NULL DEFAULT NULL AFTER `default_savings_product`, + ADD COLUMN `default_savings_account` BIGINT NULL DEFAULT NULL AFTER `default_savings_product`, ADD CONSTRAINT `FK_m_client_m_savings_account` FOREIGN KEY (`default_savings_account`) REFERENCES `m_savings_account` (`id`); INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('portfolio', 'UPDATESAVINGSACCOUNT_CLIENT', 'CLIENT', 'UPDATESAVINGSACCOUNT', 0); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V152__added_grace_for_over_due.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V152__added_grace_for_over_due.sql index d796d8999..c46ac6daf 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V152__added_grace_for_over_due.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V152__added_grace_for_over_due.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_product_loan` - ADD COLUMN `grace_on_arrears_ageing` SMALLINT(5) NULL DEFAULT NULL AFTER `max_outstanding_loan_balance`; + ADD COLUMN `grace_on_arrears_ageing` SMALLINT NULL DEFAULT NULL AFTER `max_outstanding_loan_balance`; ALTER TABLE `m_loan` - ADD COLUMN `grace_on_arrears_ageing` SMALLINT(5) NULL DEFAULT NULL AFTER `max_outstanding_loan_balance`; \ No newline at end of file + ADD COLUMN `grace_on_arrears_ageing` SMALLINT NULL DEFAULT NULL AFTER `max_outstanding_loan_balance`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V157__overdue_charge_improvements.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V157__overdue_charge_improvements.sql index c0f570a7a..d1d11e717 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V157__overdue_charge_improvements.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V157__overdue_charge_improvements.sql @@ -18,18 +18,18 @@ -- ALTER TABLE `m_charge` - ADD COLUMN `fee_frequency` SMALLINT(5) NULL DEFAULT NULL AFTER `max_cap`; + ADD COLUMN `fee_frequency` SMALLINT NULL DEFAULT NULL AFTER `max_cap`; CREATE TABLE `m_loan_overdue_installment_charge` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` BIGINT(20) NOT NULL, - `loan_schedule_id` BIGINT(20) NOT NULL, - `frequency_number` INT(10) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `loan_schedule_id` BIGINT NOT NULL, + `frequency_number` INT NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_m_loan_overdue_installment_charge_m_loan_charge` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK_m_loan_overdue_installment_charge_m_loan_repayment_schedule` FOREIGN KEY (`loan_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; INSERT INTO `c_configuration` (`name`, `value`, `enabled`) VALUES ('grace-on-penalty-posting', 0, 1); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V160__standing_instruction_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V160__standing_instruction_changes.sql index 9163cb2f4..ac6673b84 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V160__standing_instruction_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V160__standing_instruction_changes.sql @@ -18,25 +18,25 @@ -- CREATE TABLE `m_account_transfer_details` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `from_office_id` BIGINT(20) NOT NULL, - `to_office_id` BIGINT(20) NOT NULL, - `from_client_id` BIGINT(20) NULL DEFAULT NULL, - `to_client_id` BIGINT(20) NULL DEFAULT NULL, - `from_savings_account_id` BIGINT(20) NULL DEFAULT NULL, - `to_savings_account_id` BIGINT(20) NULL DEFAULT NULL, - `from_loan_account_id` BIGINT(20) NULL DEFAULT NULL, - `to_loan_account_id` BIGINT(20) NULL DEFAULT NULL, - `transfer_type` SMALLINT(2) NULL DEFAULT NULL, - `from_savings_transaction_id` BIGINT(20) NULL DEFAULT NULL, - `from_loan_transaction_id` BIGINT(20) NULL DEFAULT NULL, - `to_savings_transaction_id` BIGINT(20) NULL DEFAULT NULL, - `to_loan_transaction_id` BIGINT(20) NULL DEFAULT NULL, - `is_reversed` TINYINT(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT NOT NULL, + `to_office_id` BIGINT NOT NULL, + `from_client_id` BIGINT NULL DEFAULT NULL, + `to_client_id` BIGINT NULL DEFAULT NULL, + `from_savings_account_id` BIGINT NULL DEFAULT NULL, + `to_savings_account_id` BIGINT NULL DEFAULT NULL, + `from_loan_account_id` BIGINT NULL DEFAULT NULL, + `to_loan_account_id` BIGINT NULL DEFAULT NULL, + `transfer_type` SMALLINT NULL DEFAULT NULL, + `from_savings_transaction_id` BIGINT NULL DEFAULT NULL, + `from_loan_transaction_id` BIGINT NULL DEFAULT NULL, + `to_savings_transaction_id` BIGINT NULL DEFAULT NULL, + `to_loan_transaction_id` BIGINT NULL DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `transaction_date` DATE NOT NULL, `currency_code` VARCHAR(3) NOT NULL, - `currency_digits` SMALLINT(5) NOT NULL, - `currency_multiplesof` SMALLINT(5) NULL DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT NULL DEFAULT NULL, `amount` DECIMAL(19,6) NOT NULL, `description` VARCHAR(200) NOT NULL, PRIMARY KEY (`id`), @@ -57,46 +57,46 @@ CREATE TABLE `m_account_transfer_details` ( CONSTRAINT `FK_m_account_transfer_details_to_office` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK_m_account_transfer_details_to_savings_account` FOREIGN KEY (`to_savings_account_id`) REFERENCES `m_savings_account` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; CREATE TABLE `m_account_transfer_standing_instructions` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(250) NOT NULL, - `account_transfer_details_id` BIGINT(20) NOT NULL, - `priority` TINYINT(2) NOT NULL, - `status` TINYINT(2) NOT NULL, - `instruction_type` TINYINT(2) NOT NULL, + `account_transfer_details_id` BIGINT NOT NULL, + `priority` TINYINT NOT NULL, + `status` TINYINT NOT NULL, + `instruction_type` TINYINT NOT NULL, `amount` DECIMAL(19,6) NULL DEFAULT NULL, `valid_from` DATE NOT NULL, `valid_till` DATE NULL DEFAULT NULL, - `recurrence_type` TINYINT(1) NOT NULL, - `recurrence_frequency` SMALLINT(5) NULL DEFAULT NULL, - `recurrence_interval` SMALLINT(5) NULL DEFAULT NULL, - `recurrence_on_day` SMALLINT(2) NULL DEFAULT NULL, - `recurrence_on_month` SMALLINT(2) NULL DEFAULT NULL, + `recurrence_type` tinyint NOT NULL, + `recurrence_frequency` SMALLINT NULL DEFAULT NULL, + `recurrence_interval` SMALLINT NULL DEFAULT NULL, + `recurrence_on_day` SMALLINT NULL DEFAULT NULL, + `recurrence_on_month` SMALLINT NULL DEFAULT NULL, `last_run_date` DATE NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `name` (`name`), INDEX `FK_m_standing_instructions_account_transfer_details` (`account_transfer_details_id`), CONSTRAINT `FK_m_standing_instructions_account_transfer_details` FOREIGN KEY (`account_transfer_details_id`) REFERENCES `m_account_transfer_details` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; CREATE TABLE `m_account_transfer_transaction` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `account_transfer_details_id` BIGINT(20) NOT NULL, - `from_savings_transaction_id` BIGINT(20) NULL DEFAULT NULL, - `from_loan_transaction_id` BIGINT(20) NULL DEFAULT NULL, - `to_savings_transaction_id` BIGINT(20) NULL DEFAULT NULL, - `to_loan_transaction_id` BIGINT(20) NULL DEFAULT NULL, - `is_reversed` TINYINT(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_transfer_details_id` BIGINT NOT NULL, + `from_savings_transaction_id` BIGINT NULL DEFAULT NULL, + `from_loan_transaction_id` BIGINT NULL DEFAULT NULL, + `to_savings_transaction_id` BIGINT NULL DEFAULT NULL, + `to_loan_transaction_id` BIGINT NULL DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `transaction_date` DATE NOT NULL, `currency_code` VARCHAR(3) NOT NULL, - `currency_digits` SMALLINT(5) NOT NULL, - `currency_multiplesof` SMALLINT(5) NULL DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT NULL DEFAULT NULL, `amount` DECIMAL(19,6) NOT NULL, `description` VARCHAR(200) NOT NULL, PRIMARY KEY (`id`), @@ -111,7 +111,7 @@ CREATE TABLE `m_account_transfer_transaction` ( CONSTRAINT `FK_m_account_transfer_transaction_to_m_loan_transaction` FOREIGN KEY (`to_loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`), CONSTRAINT `FK_m_account_transfer_transaction_to_m_savings_transaction` FOREIGN KEY (`to_savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V163__added_npa_for_loans.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V163__added_npa_for_loans.sql index 8d1308f8c..3b15a6f88 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V163__added_npa_for_loans.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V163__added_npa_for_loans.sql @@ -18,9 +18,9 @@ -- ALTER TABLE `m_product_loan` - ADD COLUMN `overdue_days_for_npa` SMALLINT(5) NULL DEFAULT NULL AFTER `grace_on_arrears_ageing`; + ADD COLUMN `overdue_days_for_npa` SMALLINT NULL DEFAULT NULL AFTER `grace_on_arrears_ageing`; ALTER TABLE `m_loan` - ADD COLUMN `is_npa` TINYINT(1) NOT NULL DEFAULT '0' AFTER `grace_on_arrears_ageing`; + ADD COLUMN `is_npa` tinyint NOT NULL DEFAULT '0' AFTER `grace_on_arrears_ageing`; INSERT INTO `job` (`name`, `display_name`, `cron_expression`, `create_time`) VALUES ('Update Non Performing Assets', 'Update Non Performing Assets', '0 0 0 1/1 * ? *', now()); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V164__fd_and_rd_deposit_tables.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V164__fd_and_rd_deposit_tables.sql index 2acbc0e35..0df7c4059 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V164__fd_and_rd_deposit_tables.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V164__fd_and_rd_deposit_tables.sql @@ -18,22 +18,22 @@ -- CREATE TABLE IF NOT EXISTS `m_interest_rate_chart` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `description` varchar(200) DEFAULT NULL, `from_date` date NOT NULL, `end_date` date DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_interest_rate_slab` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `interest_rate_chart_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `interest_rate_chart_id` BIGINT NOT NULL, `description` varchar(200) DEFAULT NULL, - `period_type_enum` smallint(5) NOT NULL DEFAULT '1', - `from_period` int(11) NOT NULL DEFAULT '0', - `to_period` int(11) DEFAULT NULL, + `period_type_enum` SMALLINT NOT NULL DEFAULT '1', + `from_period` INT NOT NULL DEFAULT '0', + `to_period` INT DEFAULT NULL, `amount_range_from` decimal(19,6) DEFAULT NULL, `amount_range_to` decimal(19,6) DEFAULT NULL, `annual_interest_rate` decimal(19,6) NOT NULL, @@ -41,54 +41,54 @@ CREATE TABLE IF NOT EXISTS `m_interest_rate_slab` ( PRIMARY KEY (`id`), KEY `FKIRS00000000000001` (`interest_rate_chart_id`), CONSTRAINT `FKIRS00000000000001` FOREIGN KEY (`interest_rate_chart_id`) REFERENCES `m_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_deposit_product_interest_rate_chart` ( - `deposit_product_id` bigint(20) NOT NULL, - `interest_rate_chart_id` bigint(20) NOT NULL, + `deposit_product_id` BIGINT NOT NULL, + `interest_rate_chart_id` BIGINT NOT NULL, UNIQUE KEY `deposit_product_id_interest_rate_chart_id` (`deposit_product_id`,`interest_rate_chart_id`), KEY `FKDPIRC00000000000002` (`interest_rate_chart_id`), CONSTRAINT `FKDPIRC00000000000001` FOREIGN KEY (`deposit_product_id`) REFERENCES `m_savings_product` (`id`), CONSTRAINT `FKDPIRC00000000000002` FOREIGN KEY (`interest_rate_chart_id`) REFERENCES `m_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_deposit_product_term_and_preclosure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_product_id` bigint(20) NOT NULL DEFAULT '0', - `min_deposit_term` int(11) DEFAULT NULL, - `max_deposit_term` int(11) DEFAULT NULL, - `min_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `max_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `in_multiples_of_deposit_term` int(11) DEFAULT NULL, - `in_multiples_of_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `interest_free_period_applicable` smallint(5) DEFAULT NULL, - `interest_free_from_period` int(11) DEFAULT NULL, - `interest_free_to_period` int(11) DEFAULT NULL, - `interest_free_period_frequency_enum` smallint(5) DEFAULT NULL, - `pre_closure_penal_applicable` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_product_id` BIGINT NOT NULL DEFAULT '0', + `min_deposit_term` INT DEFAULT NULL, + `max_deposit_term` INT DEFAULT NULL, + `min_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `max_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `in_multiples_of_deposit_term` INT DEFAULT NULL, + `in_multiples_of_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `interest_free_period_applicable` SMALLINT DEFAULT NULL, + `interest_free_from_period` INT DEFAULT NULL, + `interest_free_to_period` INT DEFAULT NULL, + `interest_free_period_frequency_enum` SMALLINT DEFAULT NULL, + `pre_closure_penal_applicable` SMALLINT DEFAULT NULL, `pre_closure_penal_interest` decimal(19,6) DEFAULT NULL, - `pre_closure_penal_interest_on_enum` smallint(5) DEFAULT NULL, + `pre_closure_penal_interest_on_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKDPTP00000000000001` (`savings_product_id`), CONSTRAINT `FKDPTP00000000000001` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_deposit_product_recurring_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_product_id` bigint(20) NOT NULL DEFAULT '0', - `recurring_deposit_type_enum` smallint(5) DEFAULT NULL, - `recurring_deposit_frequency` int(11) DEFAULT NULL, - `recurring_deposit_frequency_type_enum` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_product_id` BIGINT NOT NULL DEFAULT '0', + `recurring_deposit_type_enum` SMALLINT DEFAULT NULL, + `recurring_deposit_frequency` INT DEFAULT NULL, + `recurring_deposit_frequency_type_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKDPRD00000000000001` (`savings_product_id`), CONSTRAINT `FKDPRD00000000000001` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_chart` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `name` varchar(100) DEFAULT NULL, `description` varchar(200) DEFAULT NULL, `from_date` date NOT NULL, @@ -96,15 +96,15 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_chart` ( PRIMARY KEY (`id`), KEY `FKSAIRC00000000000001` (`savings_account_id`), CONSTRAINT `FKSAIRC00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_slab` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_interest_rate_chart_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_interest_rate_chart_id` BIGINT NOT NULL, `description` varchar(200) DEFAULT NULL, - `period_type_enum` smallint(5) NOT NULL DEFAULT '1', - `from_period` int(11) NOT NULL DEFAULT '0', - `to_period` int(11) DEFAULT NULL, + `period_type_enum` SMALLINT NOT NULL DEFAULT '1', + `from_period` INT NOT NULL DEFAULT '0', + `to_period` INT DEFAULT NULL, `amount_range_from` decimal(19,6) DEFAULT NULL, `amount_range_to` decimal(19,6) DEFAULT NULL, `annual_interest_rate` decimal(19,6) NOT NULL, @@ -112,56 +112,56 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_slab` ( PRIMARY KEY (`id`), KEY `FKSAIRS00000000000001` (`savings_account_interest_rate_chart_id`), CONSTRAINT `FKSAIRS00000000000001` FOREIGN KEY (`savings_account_interest_rate_chart_id`) REFERENCES `m_savings_account_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_deposit_account_recurring_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL DEFAULT '0', `recurring_deposit_amount` decimal(19,6) DEFAULT NULL, - `recurring_deposit_type_enum` smallint(5) DEFAULT NULL, - `recurring_deposit_frequency` int(11) DEFAULT NULL, - `recurring_deposit_frequency_type_enum` smallint(5) DEFAULT NULL, + `recurring_deposit_type_enum` SMALLINT DEFAULT NULL, + `recurring_deposit_frequency` INT DEFAULT NULL, + `recurring_deposit_frequency_type_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKDARD00000000000001` (`savings_account_id`), CONSTRAINT `FKDARD00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_deposit_account_term_and_preclosure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL DEFAULT '0', - `min_deposit_term` int(11) DEFAULT NULL, - `max_deposit_term` int(11) DEFAULT NULL, - `min_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `max_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `in_multiples_of_deposit_term` int(11) DEFAULT NULL, - `in_multiples_of_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `interest_free_period_applicable` smallint(5) DEFAULT NULL, - `interest_free_from_period` int(11) DEFAULT NULL, - `interest_free_to_period` int(11) DEFAULT NULL, - `interest_free_period_frequency_enum` smallint(5) DEFAULT NULL, - `pre_closure_penal_applicable` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL DEFAULT '0', + `min_deposit_term` INT DEFAULT NULL, + `max_deposit_term` INT DEFAULT NULL, + `min_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `max_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `in_multiples_of_deposit_term` INT DEFAULT NULL, + `in_multiples_of_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `interest_free_period_applicable` SMALLINT DEFAULT NULL, + `interest_free_from_period` INT DEFAULT NULL, + `interest_free_to_period` INT DEFAULT NULL, + `interest_free_period_frequency_enum` SMALLINT DEFAULT NULL, + `pre_closure_penal_applicable` SMALLINT DEFAULT NULL, `pre_closure_penal_interest` decimal(19,6) DEFAULT NULL, - `pre_closure_penal_interest_on_enum` smallint(5) DEFAULT NULL, - `deposit_period` int(11) DEFAULT NULL, - `deposit_period_frequency_enum` smallint(5) DEFAULT NULL, + `pre_closure_penal_interest_on_enum` SMALLINT DEFAULT NULL, + `deposit_period` INT DEFAULT NULL, + `deposit_period_frequency_enum` SMALLINT DEFAULT NULL, `deposit_amount` decimal(19,6) DEFAULT NULL, `maturity_amount` decimal(19,6) DEFAULT NULL, `maturity_date` date DEFAULT NULL, - `on_account_closure_enum` smallint(5) DEFAULT NULL, + `on_account_closure_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKDATP00000000000001` (`savings_account_id`), CONSTRAINT `FKDATP00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ALTER TABLE `m_savings_product` - ADD COLUMN `deposit_type_enum` SMALLINT(5) NOT NULL DEFAULT '100' AFTER `description`; + ADD COLUMN `deposit_type_enum` SMALLINT NOT NULL DEFAULT '100' AFTER `description`; ALTER TABLE `m_savings_account` - ADD COLUMN `deposit_type_enum` SMALLINT(5) NOT NULL DEFAULT '100' AFTER `account_type_enum`; + ADD COLUMN `deposit_type_enum` SMALLINT NOT NULL DEFAULT '100' AFTER `account_type_enum`; ALTER TABLE `m_client` - ADD COLUMN `gender_cv_id` INT(11) NULL DEFAULT NULL AFTER `mobile_no`, + ADD COLUMN `gender_cv_id` INT NULL DEFAULT NULL AFTER `mobile_no`, ADD COLUMN `date_of_birth` DATE NULL DEFAULT NULL AFTER `gender_cv_id`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V168__added_transfer_fixed_deposit_interest_to_linked_account.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V168__added_transfer_fixed_deposit_interest_to_linked_account.sql index 2fe0ccfcb..d6c54bb62 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V168__added_transfer_fixed_deposit_interest_to_linked_account.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V168__added_transfer_fixed_deposit_interest_to_linked_account.sql @@ -21,7 +21,7 @@ ALTER TABLE `job_run_history` CHANGE COLUMN `error_message` `error_message` TEXT NULL DEFAULT NULL AFTER `status`; ALTER TABLE `m_deposit_account_term_and_preclosure` - ADD COLUMN `transfer_interest_to_linked_account` TINYINT(1) NOT NULL DEFAULT '0' AFTER `expected_firstdepositon_date`; + ADD COLUMN `transfer_interest_to_linked_account` tinyint NOT NULL DEFAULT '0' AFTER `expected_firstdepositon_date`; UPDATE `job` SET `scheduler_group`=1 WHERE `name`='Post Interest For Savings'; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V171__added_mandatory_savings_and_rd_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V171__added_mandatory_savings_and_rd_changes.sql index 4cec1e740..41b752f85 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V171__added_mandatory_savings_and_rd_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V171__added_mandatory_savings_and_rd_changes.sql @@ -38,7 +38,7 @@ ALTER TABLE `m_deposit_account_recurring_detail` ADD COLUMN `adjust_advance_towards_future_payments` TINYINT NOT NULL DEFAULT '1', ADD COLUMN `is_calendar_inherited` TINYINT NOT NULL DEFAULT '0', ADD COLUMN `total_overdue_amount` DECIMAL(19,6) NULL DEFAULT NULL, - ADD COLUMN `no_of_overdue_installments` INT(11) NULL DEFAULT NULL, + ADD COLUMN `no_of_overdue_installments` INT NULL DEFAULT NULL, DROP COLUMN `recurring_deposit_type_enum`, DROP COLUMN `recurring_deposit_frequency`, DROP COLUMN `recurring_deposit_frequency_type_enum`; @@ -51,9 +51,9 @@ ALTER TABLE `m_deposit_product_term_and_preclosure` DROP COLUMN `interest_free_period_frequency_enum`; ALTER TABLE `m_deposit_product_recurring_detail` - ADD COLUMN `is_mandatory` TINYINT(1) NOT NULL DEFAULT '1', - ADD COLUMN `allow_withdrawal` TINYINT(1) NOT NULL DEFAULT '0', - ADD COLUMN `adjust_advance_towards_future_payments` TINYINT(1) NOT NULL DEFAULT '1', + ADD COLUMN `is_mandatory` tinyint NOT NULL DEFAULT '1', + ADD COLUMN `allow_withdrawal` tinyint NOT NULL DEFAULT '0', + ADD COLUMN `adjust_advance_towards_future_payments` tinyint NOT NULL DEFAULT '1', DROP COLUMN `recurring_deposit_type_enum`, DROP COLUMN `recurring_deposit_frequency`, DROP COLUMN `recurring_deposit_frequency_type_enum`; @@ -65,21 +65,21 @@ ALTER TABLE `m_deposit_account_term_and_preclosure` DROP COLUMN `interest_free_period_frequency_enum`; CREATE TABLE `m_mandatory_savings_schedule` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `fromdate` DATE NULL DEFAULT NULL, `duedate` DATE NOT NULL, - `installment` SMALLINT(5) NOT NULL, + `installment` SMALLINT NOT NULL, `deposit_amount` DECIMAL(19,6) NULL DEFAULT NULL, `deposit_amount_completed_derived` DECIMAL(19,6) NULL DEFAULT NULL, `total_paid_in_advance_derived` DECIMAL(19,6) NULL DEFAULT NULL, `total_paid_late_derived` DECIMAL(19,6) NULL DEFAULT NULL, `completed_derived` BIT(1) NOT NULL, `obligations_met_on_date` DATE NULL DEFAULT NULL, - `createdby_id` BIGINT(20) NULL DEFAULT NULL, + `createdby_id` BIGINT NULL DEFAULT NULL, `created_date` DATETIME NULL DEFAULT NULL, `lastmodified_date` DATETIME NULL DEFAULT NULL, - `lastmodifiedby_id` BIGINT(20) NULL DEFAULT NULL, + `lastmodifiedby_id` BIGINT NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `FKMSS0000000001` (`savings_account_id`), CONSTRAINT `FKMSS0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V172__accounting_changes_for_transfers.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V172__accounting_changes_for_transfers.sql index 00f3ca935..329fd3b3d 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V172__accounting_changes_for_transfers.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V172__accounting_changes_for_transfers.sql @@ -26,15 +26,15 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('accounting', 'UPDATE_OFFICEGLACCOUNT', 'OFFICEGLACCOUNT', 'UPDATE', 0); CREATE TABLE `acc_gl_office_mapping` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` BIGINT(20) NOT NULL DEFAULT '0', - `office_id` BIGINT(20) NOT NULL, - `financial_account_type` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT NOT NULL DEFAULT '0', + `office_id` BIGINT NOT NULL, + `financial_account_type` SMALLINT NOT NULL, PRIMARY KEY (`id`), INDEX `FK_office_mapping_acc_gl_account` (`gl_account_id`), INDEX `FK_office_mapping_office` (`office_id`), CONSTRAINT `FK_office_mapping_acc_gl_account` FOREIGN KEY (`gl_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_office_mapping_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V173__ppi.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V173__ppi.sql index f0e0fbebb..9dfbe412f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V173__ppi.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V173__ppi.sql @@ -18,15 +18,15 @@ -- ALTER TABLE `m_code_value` -ADD COLUMN `code_score` INT(11) NULL AFTER `order_position`; +ADD COLUMN `code_score` INT NULL AFTER `order_position`; CREATE TABLE IF NOT EXISTS `ppi_scores` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `score_from` int(11) NOT NULL, - `score_to` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `score_from` INT NOT NULL, + `score_to` INT NOT NULL, PRIMARY KEY (`id`) -) COLLATE='utf8_general_ci' +) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; @@ -95,22 +95,22 @@ VALUES CREATE TABLE IF NOT EXISTS `ppi_likelihoods` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) NOT NULL, `name` varchar(250) NOT NULL, PRIMARY KEY (`id`) -) COLLATE='utf8_general_ci' +) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ; CREATE TABLE IF NOT EXISTS `ppi_likelihoods_ppi` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `likelihood_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `likelihood_id` BIGINT NOT NULL, `ppi_name` varchar(250) NOT NULL, - `enabled` int(11) NOT NULL DEFAULT '100', + `enabled` INT NOT NULL DEFAULT '100', PRIMARY KEY (`id`) -) COLLATE='utf8_general_ci' +) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; /**PPI permission**/ diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V175__added_incentive_interest_rates.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V175__added_incentive_interest_rates.sql index 0a9464d84..7193d0831 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V175__added_incentive_interest_rates.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V175__added_incentive_interest_rates.sql @@ -18,8 +18,8 @@ -- ALTER TABLE `m_client` - ADD COLUMN `client_type_cv_id` INT(11) NULL DEFAULT NULL AFTER `default_savings_account`, - ADD COLUMN `client_classification_cv_id` INT(11) NULL DEFAULT NULL AFTER `client_type_cv_id`, + ADD COLUMN `client_type_cv_id` INT NULL DEFAULT NULL AFTER `default_savings_account`, + ADD COLUMN `client_classification_cv_id` INT NULL DEFAULT NULL AFTER `client_type_cv_id`, ADD CONSTRAINT `FK_m_client_type_m_code_value` FOREIGN KEY (`client_type_cv_id`) REFERENCES `m_code_value` (`id`), ADD CONSTRAINT `FK_m_client_classification_m_code_value` FOREIGN KEY (`client_classification_cv_id`) REFERENCES `m_code_value` (`id`), ADD CONSTRAINT `FK1_m_client_gender_m_code_value` FOREIGN KEY (`gender_cv_id`) REFERENCES `m_code_value` (`id`); @@ -29,13 +29,13 @@ INSERT INTO `m_code` (`code_name`, `is_system_defined`) VALUES ('ClientClassific CREATE TABLE `m_interest_incentives` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `interest_rate_slab_id` BIGINT(20) NOT NULL, - `entiry_type` SMALLINT(2) NOT NULL, - `attribute_name` SMALLINT(2) NOT NULL, - `condition_type` SMALLINT(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `interest_rate_slab_id` BIGINT NOT NULL, + `entiry_type` SMALLINT NOT NULL, + `attribute_name` SMALLINT NOT NULL, + `condition_type` SMALLINT NOT NULL, `attribute_value` VARCHAR(50) NOT NULL, - `incentive_type` SMALLINT(2) NOT NULL, + `incentive_type` SMALLINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, PRIMARY KEY (`id`), INDEX `FK_m_interest_incentives_m_interest_rate_slab` (`interest_rate_slab_id`), @@ -44,13 +44,13 @@ CREATE TABLE `m_interest_incentives` ( CREATE TABLE `m_savings_interest_incentives` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `deposit_account_interest_rate_slab_id` BIGINT(20) NOT NULL, - `entiry_type` SMALLINT(2) NOT NULL, - `attribute_name` SMALLINT(2) NOT NULL, - `condition_type` SMALLINT(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `deposit_account_interest_rate_slab_id` BIGINT NOT NULL, + `entiry_type` SMALLINT NOT NULL, + `attribute_name` SMALLINT NOT NULL, + `condition_type` SMALLINT NOT NULL, `attribute_value` VARCHAR(50) NOT NULL, - `incentive_type` SMALLINT(2) NOT NULL, + `incentive_type` SMALLINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, PRIMARY KEY (`id`), INDEX `FK_m_savings_interest_incentives_m_savings_interest_rate_slab` (`deposit_account_interest_rate_slab_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V176__updates_to_financial_activity_accounts.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V176__updates_to_financial_activity_accounts.sql index 7e855d61f..ad3783fd6 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V176__updates_to_financial_activity_accounts.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V176__updates_to_financial_activity_accounts.sql @@ -25,7 +25,7 @@ ALTER TABLE `acc_gl_office_mapping` ALTER `financial_account_type` DROP DEFAULT; ALTER TABLE `acc_gl_office_mapping` - CHANGE COLUMN `financial_account_type` `financial_activity_type` SMALLINT(5) NOT NULL; + CHANGE COLUMN `financial_account_type` `financial_activity_type` SMALLINT NOT NULL; ALTER TABLE `acc_gl_office_mapping` ADD UNIQUE INDEX `financial_activity_type` (`financial_activity_type`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V17__update_stretchy_reporting_ddl.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V17__update_stretchy_reporting_ddl.sql index ec9b05b83..f23f519e9 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V17__update_stretchy_reporting_ddl.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V17__update_stretchy_reporting_ddl.sql @@ -22,18 +22,18 @@ Reason for all the tmp tables and renames is had mysql problems with foreign key */ CREATE TABLE `stretchy_report_tmp` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; insert into stretchy_report_tmp (id, report_name, report_type, report_subtype, report_category, @@ -43,7 +43,7 @@ report_sql, description, core_report, use_report from stretchy_report; CREATE TABLE `stretchy_parameter_tmp` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -54,10 +54,10 @@ CREATE TABLE `stretchy_parameter_tmp` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_id` int(11) DEFAULT NULL, + `parent_id` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; insert into stretchy_parameter_tmp (id, parameter_name, parameter_variable, parameter_label, parameter_displayType, parameter_FormatType, @@ -67,13 +67,13 @@ parameter_default, special, selectOne, selectAll, parameter_sql, parent_paramete from stretchy_parameter; CREATE TABLE `stretchy_report_parameter_tmp` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; insert into stretchy_report_parameter_tmp(report_id, parameter_id, report_parameter_name) select report_id, parameter_id, report_parameter_name diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V181__standing_instruction_logging.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V181__standing_instruction_logging.sql index b45e98ab9..01d023fa8 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V181__standing_instruction_logging.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V181__standing_instruction_logging.sql @@ -18,8 +18,8 @@ -- CREATE TABLE `m_account_transfer_standing_instructions_history` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `standing_instruction_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `standing_instruction_id` BIGINT NOT NULL, `status` VARCHAR(20) NOT NULL, `execution_time` DATETIME NOT NULL, `amount` DECIMAL(19,6) NOT NULL, diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V182__added_min_required_balance_to_savings_product.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V182__added_min_required_balance_to_savings_product.sql index 0f7243c2c..42e38efa5 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V182__added_min_required_balance_to_savings_product.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V182__added_min_required_balance_to_savings_product.sql @@ -19,8 +19,8 @@ ALTER TABLE `m_savings_product` ADD COLUMN `min_required_balance` DECIMAL(19,6) NULL AFTER `overdraft_limit`, - ADD COLUMN `allow_overdraft_min_balance` TINYINT(1) NOT NULL DEFAULT '0' AFTER `min_required_balance`; + ADD COLUMN `allow_overdraft_min_balance` tinyint NOT NULL DEFAULT '0' AFTER `min_required_balance`; ALTER TABLE `m_savings_account` ADD COLUMN `min_required_balance` DECIMAL(19,6) NULL AFTER `account_balance_derived`, - ADD COLUMN `allow_overdraft_min_balance` TINYINT(1) NOT NULL DEFAULT '0' AFTER `min_required_balance`; + ADD COLUMN `allow_overdraft_min_balance` tinyint NOT NULL DEFAULT '0' AFTER `min_required_balance`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V184__update_min_required_balance_for_savings_product.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V184__update_min_required_balance_for_savings_product.sql index 991468171..85496eab1 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V184__update_min_required_balance_for_savings_product.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V184__update_min_required_balance_for_savings_product.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_savings_product` - CHANGE COLUMN `allow_overdraft_min_balance` `enforce_min_required_balance` TINYINT(1) NOT NULL DEFAULT '0' AFTER `min_required_balance`; + CHANGE COLUMN `allow_overdraft_min_balance` `enforce_min_required_balance` tinyint NOT NULL DEFAULT '0' AFTER `min_required_balance`; ALTER TABLE `m_savings_account` - CHANGE COLUMN `allow_overdraft_min_balance` `enforce_min_required_balance` TINYINT(1) NOT NULL DEFAULT '0' AFTER `min_required_balance`; + CHANGE COLUMN `allow_overdraft_min_balance` `enforce_min_required_balance` tinyint NOT NULL DEFAULT '0' AFTER `min_required_balance`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V189__m_loan_interest_recalculation_tables.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V189__m_loan_interest_recalculation_tables.sql index e1fa56218..e67036bfc 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V189__m_loan_interest_recalculation_tables.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V189__m_loan_interest_recalculation_tables.sql @@ -18,20 +18,20 @@ -- ALTER TABLE `m_product_loan` - ADD COLUMN `days_in_month_enum` SMALLINT(5) NOT NULL DEFAULT '1' AFTER `overdue_days_for_npa`, - ADD COLUMN `days_in_year_enum` SMALLINT(5) NOT NULL DEFAULT '1' AFTER `days_in_month_enum`, + ADD COLUMN `days_in_month_enum` SMALLINT NOT NULL DEFAULT '1' AFTER `overdue_days_for_npa`, + ADD COLUMN `days_in_year_enum` SMALLINT NOT NULL DEFAULT '1' AFTER `days_in_month_enum`, ADD COLUMN `interest_recalculation_enabled` TINYINT NOT NULL DEFAULT '0' AFTER `days_in_year_enum`; ALTER TABLE `m_loan` - ADD COLUMN `days_in_month_enum` SMALLINT(5) NOT NULL DEFAULT '1' AFTER `accrued_till`, - ADD COLUMN `days_in_year_enum` SMALLINT(5) NOT NULL DEFAULT '1' AFTER `days_in_month_enum`, + ADD COLUMN `days_in_month_enum` SMALLINT NOT NULL DEFAULT '1' AFTER `accrued_till`, + ADD COLUMN `days_in_year_enum` SMALLINT NOT NULL DEFAULT '1' AFTER `days_in_month_enum`, ADD COLUMN `interest_recalculation_enabled` TINYINT NOT NULL DEFAULT '0' AFTER `days_in_year_enum`; CREATE TABLE `m_product_loan_recalculation_details` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `product_id` BIGINT(20) NOT NULL, - `compound_type_enum` SMALLINT(5) NOT NULL, - `reschedule_strategy_enum` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `compound_type_enum` SMALLINT NOT NULL, + `reschedule_strategy_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_m_product_loan_m_product_loan_recalculation_details` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`) ) @@ -39,10 +39,10 @@ COLLATE='latin1_swedish_ci' ENGINE=InnoDB; CREATE TABLE `m_loan_recalculation_details` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_id` BIGINT(20) NOT NULL, - `compound_type_enum` SMALLINT(5) NOT NULL, - `reschedule_strategy_enum` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `compound_type_enum` SMALLINT NOT NULL, + `reschedule_strategy_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_m_loan_m_loan_recalculation_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) ) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V194__added_recalculatedInterestComponent_for_interest_recalculation.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V194__added_recalculatedInterestComponent_for_interest_recalculation.sql index 1f2bbae9a..b596efba1 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V194__added_recalculatedInterestComponent_for_interest_recalculation.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V194__added_recalculatedInterestComponent_for_interest_recalculation.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_loan_repayment_schedule` - ADD COLUMN `recalculated_interest_component` TINYINT(1) NOT NULL DEFAULT '0'; \ No newline at end of file + ADD COLUMN `recalculated_interest_component` tinyint NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V195__moved_rest_frequency_to_product_level.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V195__moved_rest_frequency_to_product_level.sql index eac1c1ba9..d7d3b6bf7 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V195__moved_rest_frequency_to_product_level.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V195__moved_rest_frequency_to_product_level.sql @@ -18,11 +18,11 @@ -- ALTER TABLE `m_product_loan_recalculation_details` - ADD COLUMN `rest_frequency_type_enum` SMALLINT(1) NOT NULL AFTER `reschedule_strategy_enum`, - ADD COLUMN `rest_frequency_interval` SMALLINT(3) NOT NULL DEFAULT '0' AFTER `rest_frequency_type_enum`, + ADD COLUMN `rest_frequency_type_enum` SMALLINT NOT NULL AFTER `reschedule_strategy_enum`, + ADD COLUMN `rest_frequency_interval` SMALLINT NOT NULL DEFAULT '0' AFTER `rest_frequency_type_enum`, ADD COLUMN `rest_freqency_date` DATE NULL DEFAULT NULL AFTER `rest_frequency_interval`; ALTER TABLE `m_loan_recalculation_details` - ADD COLUMN `rest_frequency_type_enum` SMALLINT(1) NOT NULL AFTER `reschedule_strategy_enum`, - ADD COLUMN `rest_frequency_interval` SMALLINT(3) NOT NULL DEFAULT '0' AFTER `rest_frequency_type_enum`, + ADD COLUMN `rest_frequency_type_enum` SMALLINT NOT NULL AFTER `reschedule_strategy_enum`, + ADD COLUMN `rest_frequency_interval` SMALLINT NOT NULL DEFAULT '0' AFTER `rest_frequency_type_enum`, ADD COLUMN `rest_freqency_date` DATE NULL DEFAULT NULL AFTER `rest_frequency_interval`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V197__updated_loan_running_balance_of_transactions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V197__updated_loan_running_balance_of_transactions.sql index 548cc3cfa..7c7f6c834 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V197__updated_loan_running_balance_of_transactions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V197__updated_loan_running_balance_of_transactions.sql @@ -18,8 +18,8 @@ -- CREATE TABLE `m_loan_transaction_temp` ( - `id` BIGINT(20) NOT NULL, - `loan_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL, + `loan_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL DEFAULT '0', `transaction_date` DATE NOT NULL ); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V198__loan_rescheduling_tables_and_permissions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V198__loan_rescheduling_tables_and_permissions.sql index bf08df06f..ec18e3c57 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V198__loan_rescheduling_tables_and_permissions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V198__loan_rescheduling_tables_and_permissions.sql @@ -18,25 +18,25 @@ -- create table m_loan_reschedule_request ( -id bigint(20) primary key auto_increment, -loan_id bigint(20) not null, -status_enum smallint(5) not null, -reschedule_from_installment smallint(5) not null comment 'Rescheduling will start from this installment', -grace_on_principal smallint(5) null comment 'Number of installments that should be added with 0 principal amount', -grace_on_interest smallint(5) null comment 'Number of installments that should be added with 0 interest rate', +id BIGINT primary key auto_increment, +loan_id BIGINT not null, +status_enum SMALLINT not null, +reschedule_from_installment SMALLINT not null comment 'Rescheduling will start from this installment', +grace_on_principal SMALLINT null comment 'Number of installments that should be added with 0 principal amount', +grace_on_interest SMALLINT null comment 'Number of installments that should be added with 0 interest rate', reschedule_from_date date not null comment 'Rescheduling will start from the installment with due date similar to this date.', -extra_terms smallint(5) comment 'Number of extra terms to be added to the schedule', +extra_terms SMALLINT comment 'Number of extra terms to be added to the schedule', interest_rate decimal(19,6) null comment 'If provided, the interest rate for the unpaid installments will be recalculated', -recalculate_interest tinyint(1) null comment 'If set to 1, interest will be recalculated starting from the reschedule period.', +recalculate_interest tinyint null comment 'If set to 1, interest will be recalculated starting from the reschedule period.', adjusted_due_date date null comment 'New due date for the first rescheduled installment', -reschedule_reason_cv_id int(11) null comment 'ID of code value of reason for rescheduling', +reschedule_reason_cv_id INT null comment 'ID of code value of reason for rescheduling', reschedule_reason_comment varchar(500) null comment 'Text provided in addition to the reason code value', submitted_on_date date not null, -submitted_by_user_id bigint(20) not null, +submitted_by_user_id BIGINT not null, approved_on_date date null, -approved_by_user_id bigint(20) null, +approved_by_user_id BIGINT null, rejected_on_date date null, -rejected_by_user_id bigint(20) null, +rejected_by_user_id BIGINT null, foreign key (loan_id) references m_loan(id), foreign key (reschedule_reason_cv_id) references m_code_value(id), foreign key (submitted_by_user_id) references m_appuser(id), @@ -45,12 +45,12 @@ foreign key (rejected_by_user_id) references m_appuser(id) ); create table m_loan_repayment_schedule_history ( - id bigint(20) primary key auto_increment, - loan_id bigint(20) not null, - loan_reschedule_request_id bigint(20) null, + id BIGINT primary key auto_increment, + loan_id BIGINT not null, + loan_reschedule_request_id BIGINT null, fromdate date null, duedate date not null, - installment smallint(5) not null, + installment SMALLINT not null, principal_amount decimal(19,6) null, principal_completed_derived decimal(19,6) null, principal_writtenoff_derived decimal(19,6) null, @@ -73,15 +73,15 @@ create table m_loan_repayment_schedule_history ( total_paid_late_derived decimal(19,6) null, completed_derived bit(1) not null, obligations_met_on_date date null, - createdby_id bigint(20) null, + createdby_id BIGINT null, created_date datetime null, lastmodified_date datetime null, - lastmodifiedby_id bigint(20) null, + lastmodifiedby_id BIGINT null, foreign key (loan_id) references m_loan(id), foreign key (loan_reschedule_request_id) references m_loan_reschedule_request(id) ); -alter table m_loan add rescheduledon_userid bigint(20) null after rescheduledon_date; +alter table m_loan add rescheduledon_userid BIGINT null after rescheduledon_date; insert into `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) values ('loan_reschedule', 'READ_RESCHEDULELOAN', 'RESCHEDULELOAN', 'READ', '0'); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V199__removed_extra_columns_from_schedule_history.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V199__removed_extra_columns_from_schedule_history.sql index 0127f5f03..96a481d8a 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V199__removed_extra_columns_from_schedule_history.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V199__removed_extra_columns_from_schedule_history.sql @@ -36,4 +36,4 @@ ALTER TABLE `m_loan_repayment_schedule_history` DROP COLUMN `total_paid_late_derived`, DROP COLUMN `completed_derived`, DROP COLUMN `obligations_met_on_date`, - ADD COLUMN `version` INT(5) NOT NULL; + ADD COLUMN `version` INT NOT NULL; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V1__mifosplatform-core-ddl-latest.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V1__mifosplatform-core-ddl-latest.sql index 248d31524..47426ed61 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V1__mifosplatform-core-ddl-latest.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V1__mifosplatform-core-ddl-latest.sql @@ -82,132 +82,132 @@ SET foreign_key_checks = 1; -- DDL for reference/lookup tables CREATE TABLE `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, + `decimal_places` SMALLINT NOT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` TINYINT(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(50) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /*not a major table - just intended for database reporting use for enums and values that would be hidden in java*/ CREATE TABLE `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; /* used to link MySql tables to Mifos X application tables for additional data needs */ CREATE TABLE `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE IF NOT EXISTS `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ================= end of reference/lookup tables ============= -- DDL for office related tables CREATE TABLE `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -217,14 +217,14 @@ CREATE TABLE `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -233,44 +233,44 @@ CREATE TABLE `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ============ end of office related tables ========== -- DDL for admin tables CREATE TABLE `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -285,39 +285,39 @@ CREATE TABLE `m_appuser` ( UNIQUE KEY `username_org` (`username`), KEY `FKB3D587CE0DD567A` (`office_id`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ================ end of user admin tables =============== -- DDL for organisation wide related concepts CREATE TABLE `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, + `processing_result_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), KEY `FK_m_checker_m_appuser` (`checker_id`), @@ -332,36 +332,36 @@ CREATE TABLE `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(100) NOT NULL, @@ -369,33 +369,33 @@ CREATE TABLE `m_staff` ( UNIQUE KEY `display_name` (`display_name`), KEY `FK_m_staff_m_office` (`office_id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ============ end of organisation wide related tables =========== -- DDL client/group related tables CREATE TABLE `m_group_level` ( -`id` INT(11) NOT NULL AUTO_INCREMENT, -`parent_id` INT(11) NULL DEFAULT NULL, -`super_parent` TINYINT(1) NOT NULL, +`id` INT NOT NULL AUTO_INCREMENT, +`parent_id` INT NULL DEFAULT NULL, +`super_parent` tinyint NOT NULL, `level_name` VARCHAR(100) NOT NULL, -`recursable` TINYINT(1) NOT NULL, -`can_have_clients` TINYINT(1) NOT NULL, +`recursable` tinyint NOT NULL, +`can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), INDEX `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -)ENGINE=InnoDB DEFAULT CHARSET=utf8; +)ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `staff_id` BIGINT(20) DEFAULT NULL, - `parent_id` BIGINT(20) NULL DEFAULT NULL, - `level_Id` INT(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT NULL DEFAULT NULL, + `level_Id` INT NOT NULL, `hierarchy` VARCHAR(100) NULL DEFAULT NULL, `name` varchar(100) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`, `level_id`), UNIQUE KEY `external_id` (`external_id`, `level_Id`), @@ -405,12 +405,12 @@ CREATE TABLE `m_group` ( CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`), CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `office_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, @@ -419,22 +419,22 @@ CREATE TABLE `m_client` ( `display_name` varchar(100) NOT NULL, `image_key` varchar(500) DEFAULT NULL, `joined_date` date DEFAULT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), KEY `FKCE00CAB3E0DD567A` (`office_id`), CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -444,96 +444,96 @@ CREATE TABLE `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ==== end of client/group related tables ========== -- DDL for loan and loan related tables CREATE TABLE `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), KEY `FKA6A8A7D77240145` (`fund_id`), KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `interest_period_frequency_enum` smallint(5) NOT NULL, + `interest_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -562,12 +562,12 @@ CREATE TABLE `m_loan` ( `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -597,10 +597,10 @@ CREATE TABLE `m_loan` ( CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -609,14 +609,14 @@ CREATE TABLE `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_guarantor` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_id` BIGINT(20) NOT NULL, - `client_reln_cv_id` INT(11) DEFAULT NULL, - `type_enum` SMALLINT(5) NOT NULL, - `entity_id` BIGINT(20) NULL DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `client_reln_cv_id` INT DEFAULT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT NULL DEFAULT NULL, `firstname` VARCHAR(50) NULL DEFAULT NULL, `lastname` VARCHAR(50) NULL DEFAULT NULL, `dob` DATE NULL DEFAULT NULL, @@ -633,16 +633,16 @@ CREATE TABLE `m_guarantor` ( INDEX `FK_m_guarantor_m_loan` (`loan_id`), CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -650,19 +650,19 @@ CREATE TABLE `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `value` DECIMAL(19,6) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), @@ -670,31 +670,31 @@ CREATE TABLE `m_loan_collateral` ( KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -710,21 +710,21 @@ CREATE TABLE `m_loan_repayment_schedule` ( `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL, `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `interest_waived_derived` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `is_reversed` TINYINT(1) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -734,47 +734,47 @@ CREATE TABLE `m_loan_transaction` ( PRIMARY KEY (`id`), KEY `FKCFCEA42640BE0710` (`loan_id`), CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- ======== end of loan related tables ========== CREATE TABLE `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, - `interest_period_enum` SMALLINT(5) NOT NULL, - `interest_calculation_type_enum` SMALLINT(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` SMALLINT(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, + `interest_period_enum` SMALLINT NOT NULL, + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `status_enum` SMALLINT(5) NOT NULL DEFAULT 300, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT 300, `activation_date` DATE DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `nominal_interest_rate_per_period` decimal(19,6) NOT NULL, - `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL, + `nominal_interest_rate_period_frequency_enum` SMALLINT NOT NULL, `annual_nominal_interest_rate` decimal(19,6) NOT NULL, - `interest_period_enum` SMALLINT(5) NOT NULL, - `interest_calculation_type_enum` SMALLINT(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` SMALLINT(5) NOT NULL, + `interest_period_enum` SMALLINT NOT NULL, + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, `lockedin_until_date_derived` DATE DEFAULT NULL, `total_deposits_derived` decimal(19,6) DEFAULT NULL, `total_withdrawals_derived` decimal(19,6) DEFAULT NULL, @@ -790,15 +790,15 @@ CREATE TABLE `m_savings_account` ( CONSTRAINT `FKSA00000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `is_reversed` tinyint NOT NULL, `running_balance_derived` DECIMAL(19,6) NULL, `balance_number_of_days_derived` INT NULL, `balance_end_date_derived` DATE NULL, @@ -806,23 +806,23 @@ CREATE TABLE `m_savings_account_transaction` ( PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- end of savings account related tables -- DDL for notes associated with all client/group and financial accounts CREATE TABLE `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -836,32 +836,32 @@ CREATE TABLE `m_note` ( CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- DDL for accounting sub system related tables CREATE TABLE `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), KEY `FK_ACC_0000000001` (`parent_id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -873,24 +873,24 @@ CREATE TABLE `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `transaction_id` varchar(50) NOT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', - `manual_entry` TINYINT(1) NOT NULL DEFAULT '0', + `reversed` tinyint NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), @@ -904,26 +904,26 @@ CREATE TABLE `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- =========== end of accounting related tables ========== -- DDL for reporting related tables CREATE TABLE `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `stretchy_parameter` ( - `parameter_id` int(11) NOT NULL AUTO_INCREMENT, + `parameter_id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -934,32 +934,32 @@ CREATE TABLE `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_parameter_id` int(11) NULL DEFAULT NULL, + `parent_parameter_id` INT NULL DEFAULT NULL, PRIMARY KEY (`parameter_id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), INDEX `fk_stretchy_parameter_0001_idx` (`parent_parameter_id`), CONSTRAINT `fk_stretchy_parameter_0001` FOREIGN KEY (`parent_parameter_id`) REFERENCES `stretchy_parameter` (`parameter_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `stretchy_report` ( - `report_id` int(11) NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`report_id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `stretchy_report_parameter` ( - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`report_id`,`parameter_id`), UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- =========== end of reporting related tables ============ \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V201__webhooks.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V201__webhooks.sql index 635266ba7..7fe11b2f3 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V201__webhooks.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V201__webhooks.sql @@ -21,56 +21,56 @@ -- Table `m_hook_templates` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `m_hook_templates` ( - `id` SMALLINT(6) NOT NULL AUTO_INCREMENT, + `id` SMALLINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`)) -ENGINE = InnoDB DEFAULT CHARSET=utf8; +ENGINE = InnoDB DEFAULT CHARSET=UTF8MB4; -- ----------------------------------------------------- -- Table `m_hook` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `m_hook` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `template_id` SMALLINT(6) NOT NULL, - `is_active` SMALLINT(3) NOT NULL DEFAULT 1, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `template_id` SMALLINT NOT NULL, + `is_active` SMALLINT NOT NULL DEFAULT 1, `name` VARCHAR(45) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), INDEX `fk_template_id_idx` (`template_id` ASC), CONSTRAINT `fk_template_id` FOREIGN KEY (`template_id`) REFERENCES `m_hook_templates` (`id`)) -ENGINE = InnoDB DEFAULT CHARSET=utf8; +ENGINE = InnoDB DEFAULT CHARSET=UTF8MB4; -- ----------------------------------------------------- -- Table `m_hook_schema` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `m_hook_schema` ( - `id` SMALLINT(6) NOT NULL AUTO_INCREMENT, - `hook_template_id` SMALLINT(6) NOT NULL, + `id` SMALLINT NOT NULL AUTO_INCREMENT, + `hook_template_id` SMALLINT NOT NULL, `field_type` VARCHAR(45) NOT NULL, `field_name` VARCHAR(100) NOT NULL, `placeholder` VARCHAR(100) DEFAULT NULL, - `optional` TINYINT(3) NOT NULL DEFAULT 0, + `optional` TINYINT NOT NULL DEFAULT 0, PRIMARY KEY (`id`), INDEX `fk_hook_template_id_idx` (`hook_template_id` ASC), CONSTRAINT `fk_hook_template_id` FOREIGN KEY (`hook_template_id`) REFERENCES `m_hook_templates` (`id`)) -ENGINE = InnoDB DEFAULT CHARSET=utf8; +ENGINE = InnoDB DEFAULT CHARSET=UTF8MB4; -- ----------------------------------------------------- -- Table `m_hook_registered_events` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `m_hook_registered_events` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `hook_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `hook_id` BIGINT NOT NULL, `entity_name` VARCHAR(45) NOT NULL, `action_name` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`), @@ -78,15 +78,15 @@ CREATE TABLE IF NOT EXISTS `m_hook_registered_events` ( CONSTRAINT `fk_hook_idc` FOREIGN KEY (`hook_id`) REFERENCES `m_hook` (`id`)) -ENGINE = InnoDB DEFAULT CHARSET=utf8; +ENGINE = InnoDB DEFAULT CHARSET=UTF8MB4; -- ----------------------------------------------------- -- Table `m_hook_configuration` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `m_hook_configuration` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `hook_id` BIGINT(20) NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `hook_id` BIGINT NULL, `field_type` VARCHAR(45) NOT NULL, `field_name` VARCHAR(100) NOT NULL, `field_value` VARCHAR(100) NOT NULL, @@ -95,7 +95,7 @@ CREATE TABLE IF NOT EXISTS `m_hook_configuration` ( CONSTRAINT `fk_hook_id_cfg` FOREIGN KEY (`hook_id`) REFERENCES `m_hook` (`id`)) -ENGINE = InnoDB DEFAULT CHARSET=utf8; +ENGINE = InnoDB DEFAULT CHARSET=UTF8MB4; insert into `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('configuration', 'CREATE_HOOK', 'HOOK', 'CREATE', 0); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V202__savings_officer_history_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V202__savings_officer_history_table.sql index f258414be..8e71595eb 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V202__savings_officer_history_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V202__savings_officer_history_table.sql @@ -18,21 +18,21 @@ -- CREATE TABLE `m_savings_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `savings_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `savings_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_savings_officer_assignment_history_0001` (`account_id`), KEY `fk_m_savings_officer_assignment_history_0002` (`savings_officer_id`), CONSTRAINT `fk_m_savings_officer_assignment_history_0001` FOREIGN KEY (`account_id`) REFERENCES `m_savings_account` (`id`), CONSTRAINT `fk_m_savings_officer_assignment_history_0002` FOREIGN KEY (`savings_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; insert into m_permission (`grouping`,code,entity_name,action_name) values ('portfolio','REMOVESAVINGSOFFICER_SAVINGSACCOUNT','SAVINGSACCOUNT','REMOVESAVINGSOFFICER'); insert into m_permission (`grouping`,code,entity_name,action_name) values ('portfolio','UPDATESAVINGSOFFICER_SAVINGSACCOUNT','SAVINGSACCOUNT','UPDATESAVINGSOFFICER'); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V205__fix_for_charge_and_interest_waiver_with_accruals.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V205__fix_for_charge_and_interest_waiver_with_accruals.sql index 2068c3904..51ba75984 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V205__fix_for_charge_and_interest_waiver_with_accruals.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V205__fix_for_charge_and_interest_waiver_with_accruals.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_loan_charge_paid_by` - ADD COLUMN `installment_number` SMALLINT(5) NULL AFTER `amount`; + ADD COLUMN `installment_number` SMALLINT NULL AFTER `amount`; ALTER TABLE `m_loan_transaction` ADD COLUMN `unrecognized_income_portion` DECIMAL(19,6) NULL DEFAULT NULL AFTER `overpayment_portion_derived`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V207__min_max_clients_per_group.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V207__min_max_clients_per_group.sql index b0c15474e..7c5b48e70 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V207__min_max_clients_per_group.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V207__min_max_clients_per_group.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `m_group_level` - ADD COLUMN `min_clients` INT(11) NOT NULL DEFAULT '0' AFTER `can_have_clients`, - ADD COLUMN `max_clients` INT(11) NOT NULL DEFAULT '0' AFTER `min_clients`; \ No newline at end of file + ADD COLUMN `min_clients` INT NOT NULL DEFAULT '0' AFTER `can_have_clients`, + ADD COLUMN `max_clients` INT NOT NULL DEFAULT '0' AFTER `min_clients`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V210__track_manually_adjusted_transactions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V210__track_manually_adjusted_transactions.sql index cf3fa7e25..d50bd8cb1 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V210__track_manually_adjusted_transactions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V210__track_manually_adjusted_transactions.sql @@ -18,4 +18,4 @@ -- Alter table m_loan_transaction -Add column manually_adjusted_or_reversed tinyint(1) default 0; \ No newline at end of file +Add column manually_adjusted_or_reversed tinyint default 0; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V211__minimum_days_between_disbursal_and_first_repayment.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V211__minimum_days_between_disbursal_and_first_repayment.sql index f94f173a4..31d357deb 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V211__minimum_days_between_disbursal_and_first_repayment.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V211__minimum_days_between_disbursal_and_first_repayment.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_product_loan` - ADD COLUMN `min_days_between_disbursal_and_first_repayment` INT(3) NULL AFTER `interest_recalculation_enabled`; \ No newline at end of file + ADD COLUMN `min_days_between_disbursal_and_first_repayment` INT NULL AFTER `interest_recalculation_enabled`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V212__add_NthDay_and_DayOfWeek_columns_loan.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V212__add_NthDay_and_DayOfWeek_columns_loan.sql index 927530084..1a22a6da9 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V212__add_NthDay_and_DayOfWeek_columns_loan.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V212__add_NthDay_and_DayOfWeek_columns_loan.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `m_loan` - ADD COLUMN `repayment_frequency_nth_day_enum` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `repayment_period_frequency_enum`, - ADD COLUMN `repayment_frequency_day_of_week_enum` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `repayment_frequency_nth_day_enum`; + ADD COLUMN `repayment_frequency_nth_day_enum` SMALLINT NOT NULL DEFAULT '0' AFTER `repayment_period_frequency_enum`, + ADD COLUMN `repayment_frequency_day_of_week_enum` SMALLINT NOT NULL DEFAULT '0' AFTER `repayment_frequency_nth_day_enum`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V213__NthDay_and_DayOfWeek_columns_should_be_nullable.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V213__NthDay_and_DayOfWeek_columns_should_be_nullable.sql index 2e6dac11b..c7ce5e2ee 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V213__NthDay_and_DayOfWeek_columns_should_be_nullable.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V213__NthDay_and_DayOfWeek_columns_should_be_nullable.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `m_loan` - CHANGE COLUMN `repayment_frequency_nth_day_enum` `repayment_frequency_nth_day_enum` SMALLINT(5) NULL DEFAULT '0' AFTER `repayment_period_frequency_enum`, - CHANGE COLUMN `repayment_frequency_day_of_week_enum` `repayment_frequency_day_of_week_enum` SMALLINT(5) NULL DEFAULT '0' AFTER `repayment_frequency_nth_day_enum`; + CHANGE COLUMN `repayment_frequency_nth_day_enum` `repayment_frequency_nth_day_enum` SMALLINT NULL DEFAULT '0' AFTER `repayment_period_frequency_enum`, + CHANGE COLUMN `repayment_frequency_day_of_week_enum` `repayment_frequency_day_of_week_enum` SMALLINT NULL DEFAULT '0' AFTER `repayment_frequency_nth_day_enum`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V214__alter_table_add_create_SI_at_disbursement.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V214__alter_table_add_create_SI_at_disbursement.sql index d258c37e8..080903382 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V214__alter_table_add_create_SI_at_disbursement.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V214__alter_table_add_create_SI_at_disbursement.sql @@ -17,4 +17,4 @@ -- under the License. -- -alter table `m_loan` add `create_standing_instruction_at_disbursement` tinyint(1) null; +alter table `m_loan` add `create_standing_instruction_at_disbursement` tinyint null; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V215__guarantee_on_hold_fund_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V215__guarantee_on_hold_fund_changes.sql index e16fcab18..c0fdebba1 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V215__guarantee_on_hold_fund_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V215__guarantee_on_hold_fund_changes.sql @@ -21,11 +21,11 @@ ALTER TABLE `m_savings_account` ADD COLUMN `on_hold_funds_derived` DECIMAL(19,6) NULL DEFAULT NULL; ALTER TABLE `m_portfolio_account_associations` - ADD COLUMN `association_type_enum` SMALLINT(1) NOT NULL DEFAULT '1'; + ADD COLUMN `association_type_enum` SMALLINT NOT NULL DEFAULT '1'; CREATE TABLE `m_product_loan_guarantee_details` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, `mandatory_guarantee` DECIMAL(19,5) NOT NULL, `minimum_guarantee_from_own_funds` DECIMAL(19,5) NULL, `minimum_guarantee_from_guarantor_funds` DECIMAL(19,5) NULL, @@ -34,4 +34,4 @@ CREATE TABLE `m_product_loan_guarantee_details` ( ); ALTER TABLE `m_product_loan` - ADD COLUMN `hold_guarantee_funds` TINYINT(1) NOT NULL DEFAULT '0'; \ No newline at end of file + ADD COLUMN `hold_guarantee_funds` tinyint NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V217__client_substatus_and_codevalue_description.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V217__client_substatus_and_codevalue_description.sql index 9b4aa8a00..d1aad37b0 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V217__client_substatus_and_codevalue_description.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V217__client_substatus_and_codevalue_description.sql @@ -19,7 +19,7 @@ ALTER TABLE `m_client` - ADD COLUMN `sub_status` INT(11) NULL DEFAULT NULL AFTER `status_enum`, + ADD COLUMN `sub_status` INT NULL DEFAULT NULL AFTER `status_enum`, ADD CONSTRAINT `FK_m_client_substatus_m_code_value` FOREIGN KEY (`sub_status`) REFERENCES `m_code_value` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V218__add_user_and_datetime_for_loan_savings_transactions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V218__add_user_and_datetime_for_loan_savings_transactions.sql index a9d1b2bc8..096453c5b 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V218__add_user_and_datetime_for_loan_savings_transactions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V218__add_user_and_datetime_for_loan_savings_transactions.sql @@ -20,8 +20,8 @@ ALTER TABLE `m_loan_transaction` ADD COLUMN ( `created_date` DATETIME, - `appuser_id` BIGINT(20) + `appuser_id` BIGINT ); ALTER TABLE `m_savings_account_transaction` - ADD COLUMN `appuser_id` BIGINT(20); \ No newline at end of file + ADD COLUMN `appuser_id` BIGINT; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V219__guarantor_on_hold_fund_changes_for_account.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V219__guarantor_on_hold_fund_changes_for_account.sql index 0bb7e4e23..f53c920ee 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V219__guarantor_on_hold_fund_changes_for_account.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V219__guarantor_on_hold_fund_changes_for_account.sql @@ -18,42 +18,42 @@ -- ALTER TABLE `m_portfolio_account_associations` - ADD COLUMN `is_active` TINYINT(1) NOT NULL DEFAULT '1'; + ADD COLUMN `is_active` tinyint NOT NULL DEFAULT '1'; ALTER TABLE `m_guarantor` - ADD COLUMN `is_active` TINYINT(1) NOT NULL DEFAULT '1'; + ADD COLUMN `is_active` tinyint NOT NULL DEFAULT '1'; CREATE TABLE `m_guarantor_funding_details` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `guarantor_id` BIGINT(20) NOT NULL, - `account_associations_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `guarantor_id` BIGINT NOT NULL, + `account_associations_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, `amount_released_derived` DECIMAL(19,6) NULL, `amount_remaining_derived` DECIMAL(19,6) NULL, `amount_transfered_derived` DECIMAL(19,6) NULL, - `status_enum` SMALLINT(3) NOT NULL, + `status_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_m_guarantor_fund_details_m_guarantor` FOREIGN KEY (`guarantor_id`) REFERENCES `m_guarantor` (`id`), CONSTRAINT `FK_m_guarantor_fund_details_account_associations_id` FOREIGN KEY (`account_associations_id`) REFERENCES `m_portfolio_account_associations` (`id`) ); CREATE TABLE `m_deposit_account_on_hold_transaction` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, - `transaction_type_enum` SMALLINT(1) NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` DATE NOT NULL, - `is_reversed` TINYINT(1) NOT NULL DEFAULT '0', + `is_reversed` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), CONSTRAINT `FK_deposit_on_hold_transaction_m_savings_account` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) ); CREATE TABLE `m_guarantor_transaction` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `guarantor_fund_detail_id` BIGINT(20) NOT NULL, - `loan_transaction_id` BIGINT(20) NOT NULL, - `deposit_on_hold_transaction_id` BIGINT(20) NOT NULL, - `is_reversed` TINYINT(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `guarantor_fund_detail_id` BIGINT NOT NULL, + `loan_transaction_id` BIGINT NOT NULL, + `deposit_on_hold_transaction_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), CONSTRAINT `FK_guarantor_transaction_m_deposit_account_on_hold_transaction` FOREIGN KEY (`deposit_on_hold_transaction_id`) REFERENCES `m_deposit_account_on_hold_transaction` (`id`), CONSTRAINT `FK_guarantor_transaction_guarantor_fund_detail` FOREIGN KEY (`guarantor_fund_detail_id`) REFERENCES `m_guarantor_funding_details` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V21__activation-permissions-for-clients.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V21__activation-permissions-for-clients.sql index afffb36b9..cd864d4cb 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V21__activation-permissions-for-clients.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V21__activation-permissions-for-clients.sql @@ -23,5 +23,5 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c ALTER TABLE `m_client` CHANGE COLUMN `external_id` `external_id` VARCHAR(100) NULL DEFAULT NULL AFTER `account_no`, -CHANGE COLUMN `status_enum` `status_enum` INT(5) NOT NULL DEFAULT '300' AFTER `external_id`, +CHANGE COLUMN `status_enum` `status_enum` INT NOT NULL DEFAULT '300' AFTER `external_id`, CHANGE COLUMN `joined_date` `activation_date` DATE NULL DEFAULT NULL AFTER `status_enum`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V220__account_number_preferences.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V220__account_number_preferences.sql index eb0e5a79c..97fe135d2 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V220__account_number_preferences.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V220__account_number_preferences.sql @@ -18,13 +18,13 @@ -- CREATE TABLE `c_account_number_format` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `account_type_enum` SMALLINT(1) NOT NULL, - `prefix_type_enum` SMALLINT(2) NULL DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_type_enum` SMALLINT NOT NULL, + `prefix_type_enum` SMALLINT NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `account_type_enum` (`account_type_enum`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V221__add_version_for_m_savings_account.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V221__add_version_for_m_savings_account.sql index a5544db8b..55cf865bc 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V221__add_version_for_m_savings_account.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V221__add_version_for_m_savings_account.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_savings_account` - ADD COLUMN `version` INT(15) NOT NULL DEFAULT '1' AFTER `on_hold_funds_derived`; + ADD COLUMN `version` INT NOT NULL DEFAULT '1' AFTER `on_hold_funds_derived`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V222__guarantor_on_hold_fund_changes_for_transactions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V222__guarantor_on_hold_fund_changes_for_transactions.sql index 7d2d02934..ef9465cf8 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V222__guarantor_on_hold_fund_changes_for_transactions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V222__guarantor_on_hold_fund_changes_for_transactions.sql @@ -24,7 +24,7 @@ ALTER TABLE `m_guarantor_transaction` ALTER `loan_transaction_id` DROP DEFAULT; ALTER TABLE `m_guarantor_transaction` - CHANGE COLUMN `loan_transaction_id` `loan_transaction_id` BIGINT(20) NULL ; + CHANGE COLUMN `loan_transaction_id` `loan_transaction_id` BIGINT NULL ; INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('portfolio', 'RECOVERGUARANTEES_LOAN', 'LOAN', 'RECOVERGUARANTEES', 0); INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('portfolio', 'RECOVERGUARANTEES_LOAN_CHECKER', 'LOAN', 'RECOVERGUARANTEES_CHECKER', 0); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V223__add_version_for_m_loan_account.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V223__add_version_for_m_loan_account.sql index 24439d986..8bb0d552c 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V223__add_version_for_m_loan_account.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V223__add_version_for_m_loan_account.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_loan` - ADD COLUMN `version` INT(15) NOT NULL DEFAULT '1' AFTER `create_standing_instruction_at_disbursement`; + ADD COLUMN `version` INT NOT NULL DEFAULT '1' AFTER `create_standing_instruction_at_disbursement`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V224__client_lifecycle_adding_statuses.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V224__client_lifecycle_adding_statuses.sql index a66160d16..652170c1d 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V224__client_lifecycle_adding_statuses.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V224__client_lifecycle_adding_statuses.sql @@ -19,20 +19,20 @@ /**add columns to m_client**/ ALTER TABLE `m_client` - ADD COLUMN `reject_reason_cv_id` INT(11) NULL DEFAULT NULL AFTER `client_classification_cv_id`, + ADD COLUMN `reject_reason_cv_id` INT NULL DEFAULT NULL AFTER `client_classification_cv_id`, ADD COLUMN `rejectedon_date` DATE NULL DEFAULT NULL AFTER `reject_reason_cv_id`, - ADD COLUMN `rejectedon_userid` BIGINT(20) NULL DEFAULT NULL AFTER `rejectedon_date`, - ADD COLUMN `withdraw_reason_cv_id` INT(11) NULL DEFAULT NULL AFTER `rejectedon_userid`, + ADD COLUMN `rejectedon_userid` BIGINT NULL DEFAULT NULL AFTER `rejectedon_date`, + ADD COLUMN `withdraw_reason_cv_id` INT NULL DEFAULT NULL AFTER `rejectedon_userid`, ADD COLUMN `withdrawn_on_date` DATE NULL DEFAULT NULL AFTER `withdraw_reason_cv_id`, - ADD COLUMN `withdraw_on_userid` BIGINT(20) NULL DEFAULT NULL AFTER `withdrawn_on_date`, + ADD COLUMN `withdraw_on_userid` BIGINT NULL DEFAULT NULL AFTER `withdrawn_on_date`, ADD COLUMN `reactivated_on_date` DATE NULL AFTER `withdraw_on_userid`, - ADD COLUMN `reactivated_on_userid` BIGINT(20) NULL AFTER `reactivated_on_date`, + ADD COLUMN `reactivated_on_userid` BIGINT NULL AFTER `reactivated_on_date`, ADD CONSTRAINT `FK_m_client_type_mcode_value_reject` FOREIGN KEY (`reject_reason_cv_id`) REFERENCES `m_code_value` (`id`), ADD CONSTRAINT `FK_m_client_type_m_code_value_withdraw` FOREIGN KEY (`withdraw_reason_cv_id`) REFERENCES `m_code_value` (`id`); ALTER TABLE `m_client` - ADD COLUMN `updated_by` BIGINT(20) NULL DEFAULT NULL AFTER `closedon_date`, + ADD COLUMN `updated_by` BIGINT NULL DEFAULT NULL AFTER `closedon_date`, ADD COLUMN `updated_on` DATE NULL DEFAULT NULL AFTER `updated_by`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V228__entity_to_entity_access.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V228__entity_to_entity_access.sql index 50269f372..197ebf8b1 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V228__entity_to_entity_access.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V228__entity_to_entity_access.sql @@ -42,12 +42,12 @@ values ( -- Table where the actual restrictions will be stored CREATE TABLE `m_entity_to_entity_access` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `entity_type` VARCHAR(50) NOT NULL, - `entity_id` BIGINT(20) NOT NULL, - `access_type_code_value_id` INT(11) NOT NULL, + `entity_id` BIGINT NOT NULL, + `access_type_code_value_id` INT NOT NULL, `second_entity_type` VARCHAR(50) NOT NULL, - `second_entity_id` BIGINT(20) NOT NULL, + `second_entity_id` BIGINT NOT NULL, PRIMARY KEY (`id`), INDEX `IDX_OFFICE` (`entity_type`,`entity_id`), UNIQUE KEY `id_uniq_m_entity_to_entity_access` (`entity_type`,`entity_id`,`access_type_code_value_id`,`second_entity_type`,`second_entity_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V229__teller_cash_management.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V229__teller_cash_management.sql index 659d25fc8..3eb724a5a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V229__teller_cash_management.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V229__teller_cash_management.sql @@ -18,15 +18,15 @@ -- CREATE TABLE `m_tellers` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `office_id` BIGINT(20) NOT NULL, - `debit_account_id` BIGINT(20), - `credit_account_id` BIGINT(20), + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `debit_account_id` BIGINT, + `credit_account_id` BIGINT, `name` VARCHAR(50) NOT NULL, `description` VARCHAR(100), `valid_from` DATE, `valid_to` DATE, - `state` SMALLINT(5), + `state` SMALLINT, PRIMARY KEY (`id`), UNIQUE INDEX `m_tellers_name_unq` (`name`), INDEX `IK_m_tellers_m_office` (`office_id`), @@ -36,9 +36,9 @@ CREATE TABLE `m_tellers` ( ); CREATE TABLE `m_cashiers` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `staff_id` BIGINT(20), - `teller_id` BIGINT(20), + `id` BIGINT NOT NULL AUTO_INCREMENT, + `staff_id` BIGINT, + `teller_id` BIGINT, `description` VARCHAR(100), `start_date` DATE, `end_date` DATE, @@ -53,14 +53,14 @@ CREATE TABLE `m_cashiers` ( ); CREATE TABLE `m_cashier_transactions` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `cashier_id` BIGINT(20) NOT NULL, - `txn_type` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `cashier_id` BIGINT NOT NULL, + `txn_type` SMALLINT NOT NULL, `txn_amount` DECIMAL (19,6) NOT NULL, `txn_date` DATE NOT NULL, `created_date` DATETIME NOT NULL, `entity_type` VARCHAR(50), - `entity_id` BIGINT(20), + `entity_id` BIGINT, `txn_note` VARCHAR(200), PRIMARY KEY (`id`), INDEX `IK_m_teller_transactions_m_cashier` (`cashier_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V22__alter-group-for-consistency-add-permissions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V22__alter-group-for-consistency-add-permissions.sql index 37ab4ede7..b68a2ada5 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V22__alter-group-for-consistency-add-permissions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V22__alter-group-for-consistency-add-permissions.sql @@ -27,9 +27,9 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c ALTER TABLE `m_group` DROP FOREIGN KEY `FK_m_group_level`; ALTER TABLE `m_group` CHANGE COLUMN `external_id` `external_id` VARCHAR(100) NULL DEFAULT NULL AFTER `id`, -CHANGE COLUMN `status_enum` `status_enum` INT(5) NOT NULL DEFAULT '300' AFTER `external_id`, +CHANGE COLUMN `status_enum` `status_enum` INT NOT NULL DEFAULT '300' AFTER `external_id`, CHANGE COLUMN `name` `display_name` VARCHAR(100) NOT NULL AFTER `level_id`, -CHANGE COLUMN `level_Id` `level_id` INT(11) NOT NULL, +CHANGE COLUMN `level_Id` `level_id` INT NOT NULL, ADD CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_id`) REFERENCES `m_group_level` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V230__role_status_and_correspoding_permissions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V230__role_status_and_correspoding_permissions.sql index 85487ee64..5299b125e 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V230__role_status_and_correspoding_permissions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V230__role_status_and_correspoding_permissions.sql @@ -17,7 +17,7 @@ -- under the License. -- -ALTER TABLE `m_role` ADD COLUMN `is_disabled` TINYINT(1) NOT NULL DEFAULT 0 AFTER `description`; +ALTER TABLE `m_role` ADD COLUMN `is_disabled` tinyint NOT NULL DEFAULT 0 AFTER `description`; INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('authorisation', 'DISABLE_ROLE', 'ROLE', 'DISABLE', 0); INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('authorisation', 'DISABLE_ROLE_CHECKER', 'ROLE', 'DISABLE_CHECKER', 0); INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('authorisation', 'ENABLE_ROLE', 'ROLE', 'ENABLE', 0); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V235__add_ugd_template_id_m_hook.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V235__add_ugd_template_id_m_hook.sql index 7da1becab..741019ac2 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V235__add_ugd_template_id_m_hook.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V235__add_ugd_template_id_m_hook.sql @@ -17,5 +17,5 @@ -- under the License. -- -ALTER TABLE `m_hook` ADD COLUMN `ugd_template_id` bigint(20) NULL; +ALTER TABLE `m_hook` ADD COLUMN `ugd_template_id` BIGINT NULL; ALTER TABLE `m_hook` ADD CONSTRAINT `fk_ugd_template_id` FOREIGN KEY (`ugd_template_id`) REFERENCES `m_template` (`id`); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V240__arrears_aging_config_for_interest_recalculation.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V240__arrears_aging_config_for_interest_recalculation.sql index 96157247f..a3a70ce9c 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V240__arrears_aging_config_for_interest_recalculation.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V240__arrears_aging_config_for_interest_recalculation.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_product_loan_recalculation_details` - ADD COLUMN `arrears_based_on_original_schedule` TINYINT(1) NOT NULL DEFAULT '0'; + ADD COLUMN `arrears_based_on_original_schedule` tinyint NOT NULL DEFAULT '0'; ALTER TABLE `m_product_loan` - ADD COLUMN `account_moves_out_of_npa_only_on_arrears_completion` TINYINT(1) NOT NULL DEFAULT '0'; \ No newline at end of file + ADD COLUMN `account_moves_out_of_npa_only_on_arrears_completion` tinyint NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V241__fixed_emi_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V241__fixed_emi_changes.sql index a4a406375..69aab59c6 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V241__fixed_emi_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V241__fixed_emi_changes.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `m_product_loan` - ADD COLUMN `can_define_fixed_emi_amount` TINYINT(1) NOT NULL DEFAULT '0', + ADD COLUMN `can_define_fixed_emi_amount` tinyint NOT NULL DEFAULT '0', ADD COLUMN `instalment_amount_in_multiples_of` DECIMAL(19,6) NULL DEFAULT NULL; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V242__entitytoentitymappingrelation.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V242__entitytoentitymappingrelation.sql index 28827371d..529884d0c 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V242__entitytoentitymappingrelation.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V242__entitytoentitymappingrelation.sql @@ -18,30 +18,30 @@ -- CREATE TABLE `m_entity_relation` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `from_entity_type` INT(10) NOT NULL, - `to_entity_type` INT(10) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_entity_type` INT NOT NULL, + `to_entity_type` INT NOT NULL, `code_name` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `from_entity_type_to_entity_type_code_name` (`from_entity_type`, `to_entity_type`, `code_name`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1 ; CREATE TABLE `m_entity_to_entity_mapping` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `rel_id` BIGINT(20) NOT NULL DEFAULT '0', - `from_id` BIGINT(20) NOT NULL DEFAULT '0', - `to_id` BIGINT(20) UNSIGNED NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `rel_id` BIGINT NOT NULL DEFAULT '0', + `from_id` BIGINT NOT NULL DEFAULT '0', + `to_id` BIGINT UNSIGNED NOT NULL, `start_date` DATE NULL DEFAULT NULL, `end_date` DATE NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `rel_id_from_id_to_id` (`rel_id`, `from_id`, `to_id`), CONSTRAINT `FK__rel_id_m_entity_relation_id` FOREIGN KEY (`rel_id`) REFERENCES `m_entity_relation` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1 ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V244__staff_assignment_history_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V244__staff_assignment_history_table.sql index 0d70e3b8d..63a304adc 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V244__staff_assignment_history_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V244__staff_assignment_history_table.sql @@ -18,15 +18,15 @@ -- CREATE TABLE IF NOT EXISTS `m_staff_assignment_history` ( -`id` bigint(20) NOT NULL AUTO_INCREMENT, -`centre_id` bigint(20) DEFAULT NULL, -`staff_id` bigint(20) NOT NULL, +`id` BIGINT NOT NULL AUTO_INCREMENT, +`centre_id` BIGINT DEFAULT NULL, +`staff_id` BIGINT NOT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, -`createdby_id` bigint(20) DEFAULT NULL, +`createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, -`lastmodifiedby_id` bigint(20) DEFAULT NULL, +`lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_staff_assignment_history_centre_id_m_group` (`centre_id`), KEY `FK_m_staff_assignment_history_m_staff` (`staff_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V250__password_validation_policy.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V250__password_validation_policy.sql index 770d293a4..079148c5c 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V250__password_validation_policy.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V250__password_validation_policy.sql @@ -19,12 +19,12 @@ CREATE TABLE IF NOT EXISTS `m_password_validation_policy` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `regex` text NOT NULL, `description` text NOT NULL, - `active` tinyint(4) NOT NULL DEFAULT '0', + `active` TINYINT NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4 AUTO_INCREMENT=1 ; INSERT INTO `m_password_validation_policy` ( diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V251__paymentType_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V251__paymentType_table.sql index 146a7d556..ceacbf0ac 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V251__paymentType_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V251__paymentType_table.sql @@ -18,14 +18,14 @@ -- CREATE TABLE `m_payment_type` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `value` VARCHAR(100) NULL DEFAULT NULL, `description` VARCHAR(500) NULL DEFAULT NULL, - `is_cash_payment` TINYINT(1) NULL DEFAULT '0', - `order_position` INT(11) NOT NULL DEFAULT '0', + `is_cash_payment` tinyint NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) -COLLATE='utf8_general_ci'; +COLLATE='utf8mb4_general_ci'; INSERT INTO m_payment_type (id,value,description,order_position) SELECT id,code_value,code_description,order_position @@ -39,7 +39,7 @@ ALTER TABLE `m_payment_detail` DROP FOREIGN KEY `FK_m_payment_detail_m_code_value`; ALTER TABLE `m_payment_detail` - CHANGE COLUMN `payment_type_cv_id` `payment_type_id` INT(11) NULL DEFAULT NULL AFTER `id`; + CHANGE COLUMN `payment_type_cv_id` `payment_type_id` INT NULL DEFAULT NULL AFTER `id`; ALTER TABLE `m_payment_detail` ADD CONSTRAINT `FK_m_payment_detail_m_payment_type` FOREIGN KEY (`payment_type_id`) REFERENCES `m_payment_type` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V253__product_loan_configurable_attributes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V253__product_loan_configurable_attributes.sql index 987a1af44..e9279fe7e 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V253__product_loan_configurable_attributes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V253__product_loan_configurable_attributes.sql @@ -18,7 +18,7 @@ -- CREATE TABLE `m_product_loan_configurable_attributes` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `loan_product_id` BIGINT NOT NULL, `amortization_method_enum` TINYINT NOT NULL DEFAULT '1', `interest_method_enum` TINYINT NOT NULL DEFAULT '1', @@ -31,7 +31,7 @@ CREATE TABLE `m_product_loan_configurable_attributes` ( PRIMARY KEY (`id`), KEY `fk_m_product_loan_configurable_attributes_0001` (`loan_product_id`), CONSTRAINT `fk_m_product_loan_configurable_attributes_0001` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; INSERT into `m_product_loan_configurable_attributes` diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V255__pre_close_interest_period_config.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V255__pre_close_interest_period_config.sql index 452f36ad6..17a8c6d6e 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V255__pre_close_interest_period_config.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V255__pre_close_interest_period_config.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_product_loan_recalculation_details` - ADD COLUMN `pre_close_interest_calculation_strategy` SMALLINT(3) NOT NULL DEFAULT '1'; \ No newline at end of file + ADD COLUMN `pre_close_interest_calculation_strategy` SMALLINT NOT NULL DEFAULT '1'; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V257__staff_image_association.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V257__staff_image_association.sql index 38d987c11..e9f018c9f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V257__staff_image_association.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V257__staff_image_association.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_staff` - ADD COLUMN `image_id` BIGINT(20) NULL, + ADD COLUMN `image_id` BIGINT NULL, ADD CONSTRAINT `FK_m_staff_m_image` FOREIGN KEY (`image_id`) REFERENCES `m_image` (`id`); INSERT INTO m_permission ( diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V258__interest_compounding_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V258__interest_compounding_changes.sql index 761096bc4..e38b50522 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V258__interest_compounding_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V258__interest_compounding_changes.sql @@ -18,12 +18,12 @@ -- ALTER TABLE `m_product_loan_recalculation_details` - ADD COLUMN `compounding_frequency_type_enum` SMALLINT(1) NULL DEFAULT NULL, - ADD COLUMN `compounding_frequency_interval` SMALLINT(3) NULL DEFAULT NULL, + ADD COLUMN `compounding_frequency_type_enum` SMALLINT NULL DEFAULT NULL, + ADD COLUMN `compounding_frequency_interval` SMALLINT NULL DEFAULT NULL, ADD COLUMN `compounding_freqency_date` DATE NULL DEFAULT NULL; ALTER TABLE `m_loan_recalculation_details` - ADD COLUMN `compounding_frequency_type_enum` SMALLINT(1) NULL DEFAULT NULL, - ADD COLUMN `compounding_frequency_interval` SMALLINT(3) NULL DEFAULT NULL, + ADD COLUMN `compounding_frequency_type_enum` SMALLINT NULL DEFAULT NULL, + ADD COLUMN `compounding_frequency_interval` SMALLINT NULL DEFAULT NULL, ADD COLUMN `compounding_freqency_date` DATE NULL DEFAULT NULL; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V259__alter_working_days.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V259__alter_working_days.sql index 5a45245b9..0e62515e8 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V259__alter_working_days.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V259__alter_working_days.sql @@ -17,4 +17,4 @@ -- under the License. -- -ALTER TABLE `m_working_days` ADD extend_term_daily_repayments TINYINT(1) NULL DEFAULT '0'; \ No newline at end of file +ALTER TABLE `m_working_days` ADD extend_term_daily_repayments tinyint NULL DEFAULT '0'; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V25__update_client_reports_for_status_and_activation_change.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V25__update_client_reports_for_status_and_activation_change.sql index 0fcbc0310..d3e616f32 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V25__update_client_reports_for_status_and_activation_change.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V25__update_client_reports_for_status_and_activation_change.sql @@ -91,7 +91,7 @@ left join r_enum_value am on am.enum_name = ""amortization_method_enum"" left join m_code_value purp on purp.id = l.loanpurpose_cv_id left join m_currency cur on cur.code = l.currency_code where o.id = ${officeId} -and (l.currency_code = ""${currencyId}"" or ""-1"" = ""${currencyId}"") +and (l.currency_code = ""$\{currencyId}"" or ""-1"" = ""$\{currencyId}"") and (l.product_id = ""${loanProductId}"" or ""-1"" = ""${loanProductId}"") and (ifnull(l.loan_officer_id, -10) = ""${loanOfficerId}"" or ""-1"" = ""${loanOfficerId}"") and (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId}) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V265__modify_external_service_schema.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V265__modify_external_service_schema.sql index 7799f9b31..0176920cc 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V265__modify_external_service_schema.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V265__modify_external_service_schema.sql @@ -25,23 +25,23 @@ alter table c_external_service drop index name; Rename table c_external_service to c_external_service_properties; CREATE TABLE `c_external_service` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; insert into `c_external_service` ( `name`) values( 'S3'); Alter table c_external_service_properties - ADD COLUMN `external_service_id` BIGINT(20) NULL DEFAULT NULL; + ADD COLUMN `external_service_id` BIGINT NULL DEFAULT NULL; update c_external_service_properties set external_service_id = (select id from c_external_service where name = 'S3'); ALTER TABLE `c_external_service_properties` - CHANGE COLUMN `external_service_id` `external_service_id` BIGINT(20) NOT NULL; + CHANGE COLUMN `external_service_id` `external_service_id` BIGINT NOT NULL; ALTER TABLE `c_external_service_properties` ADD CONSTRAINT `FK_c_external_service_properties_c_external_service` FOREIGN KEY (`external_service_id`) REFERENCES `c_external_service` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V266__client_fees.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V266__client_fees.sql index c449041b0..37c709426 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V266__client_fees.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V266__client_fees.sql @@ -37,18 +37,18 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c -- new tables CREATE TABLE `m_client_transaction` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NOT NULL, - `office_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, `currency_code` VARCHAR(3) NOT NULL, - `payment_detail_id` BIGINT(20) NULL DEFAULT NULL, - `is_reversed` TINYINT(1) NOT NULL, + `payment_detail_id` BIGINT NULL DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `external_id` VARCHAR(50) NULL DEFAULT NULL, `transaction_date` DATE NOT NULL, - `transaction_type_enum` SMALLINT(5) NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, `created_date` DATETIME NOT NULL, - `appuser_id` BIGINT(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `external_id` (`external_id`), INDEX `FK_m_client_transaction_m_client` (`client_id`), @@ -56,26 +56,26 @@ CREATE TABLE `m_client_transaction` ( CONSTRAINT `FK_m_client_transaction_m_appuser` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_client_transaction_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ; CREATE TABLE `m_client_charge` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NOT NULL, - `charge_id` BIGINT(20) NOT NULL, - `is_penalty` TINYINT(1) NOT NULL, - `charge_time_enum` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, `charge_due_date` DATE NULL DEFAULT NULL, - `charge_calculation_enum` SMALLINT(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, `amount_paid_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_waived_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_writtenoff_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_outstanding_derived` DECIMAL(19,6) NOT NULL, - `is_paid_derived` TINYINT(1) NULL DEFAULT NULL, - `waived` TINYINT(1) NULL DEFAULT NULL, - `is_active` TINYINT(1) NULL DEFAULT NULL, + `is_paid_derived` tinyint NULL DEFAULT NULL, + `waived` tinyint NULL DEFAULT NULL, + `is_active` tinyint NULL DEFAULT NULL, `inactivated_on_date` DATE NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `FK_m_client_charge_m_client` (`client_id`), @@ -83,14 +83,14 @@ CREATE TABLE `m_client_charge` ( CONSTRAINT `FK_m_client_charge_m_charge` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `FK_m_client_charge_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ; CREATE TABLE `m_client_charge_paid_by` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_transaction_id` BIGINT(20) NOT NULL, - `client_charge_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_transaction_id` BIGINT NOT NULL, + `client_charge_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, PRIMARY KEY (`id`), INDEX `FK_m_client_charge_paid_by_m_client_transaction` (`client_transaction_id`), @@ -98,7 +98,7 @@ CREATE TABLE `m_client_charge_paid_by` ( CONSTRAINT `FK_m_client_charge_paid_by_m_client_charge` FOREIGN KEY (`client_charge_id`) REFERENCES `m_client_charge` (`id`), CONSTRAINT `FK_m_client_charge_paid_by_m_client_transaction` FOREIGN KEY (`client_transaction_id`) REFERENCES `m_client_transaction` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V26__add-support-for-withdrawal-fees-on-savings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V26__add-support-for-withdrawal-fees-on-savings.sql index 0d41c4fa1..66cff0bd9 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V26__add-support-for-withdrawal-fees-on-savings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V26__add-support-for-withdrawal-fees-on-savings.sql @@ -19,12 +19,12 @@ ALTER TABLE `m_savings_product` ADD COLUMN `withdrawal_fee_amount` DECIMAL(19,6) NULL DEFAULT NULL AFTER `lockin_period_frequency_enum`, -ADD COLUMN `withdrawal_fee_type_enum` SMALLINT(5) NULL DEFAULT NULL AFTER `withdrawal_fee_amount`; +ADD COLUMN `withdrawal_fee_type_enum` SMALLINT NULL DEFAULT NULL AFTER `withdrawal_fee_amount`; ALTER TABLE `m_savings_account` ADD COLUMN `withdrawal_fee_amount` DECIMAL(19,6) NULL DEFAULT NULL AFTER `lockin_period_frequency_enum`, -ADD COLUMN `withdrawal_fee_type_enum` SMALLINT(5) NULL DEFAULT NULL AFTER `withdrawal_fee_amount`; +ADD COLUMN `withdrawal_fee_type_enum` SMALLINT NULL DEFAULT NULL AFTER `withdrawal_fee_amount`; ALTER TABLE `m_savings_account` diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V271__accounting_for_client_charges.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V271__accounting_for_client_charges.sql index 2dc1255e9..15ac18be4 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V271__accounting_for_client_charges.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V271__accounting_for_client_charges.sql @@ -19,10 +19,10 @@ -- Charges have a reference to an Income or Liability account that gets credited when a payment is made ALTER TABLE `m_charge` - ADD COLUMN `income_or_liability_account_id` BIGINT(20) NULL AFTER `fee_frequency`, + ADD COLUMN `income_or_liability_account_id` BIGINT NULL AFTER `fee_frequency`, ADD CONSTRAINT `FK_m_charge_acc_gl_account` FOREIGN KEY (`income_or_liability_account_id`) REFERENCES `acc_gl_account` (`id`); -- Journal entries also refer to Client transactions ALTER TABLE `acc_gl_journal_entry` - ADD COLUMN `client_transaction_id` BIGINT(20) NULL DEFAULT NULL AFTER `savings_transaction_id`, + ADD COLUMN `client_transaction_id` BIGINT NULL DEFAULT NULL AFTER `savings_transaction_id`, ADD CONSTRAINT `FK_acc_gl_journal_entry_m_client_transaction` FOREIGN KEY (`client_transaction_id`) REFERENCES `m_client_transaction` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V272__loan_tranche_disbursement_charge.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V272__loan_tranche_disbursement_charge.sql index db87c890c..41cbc7aac 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V272__loan_tranche_disbursement_charge.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V272__loan_tranche_disbursement_charge.sql @@ -18,12 +18,12 @@ -- CREATE TABLE `m_loan_tranche_disbursement_charge` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` BIGINT(20) NOT NULL, - `disbursement_detail_id` BIGINT(20) NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `disbursement_detail_id` BIGINT NULL, PRIMARY KEY (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1 ; @@ -34,9 +34,9 @@ ALTER TABLE `m_loan_tranche_disbursement_charge` CREATE TABLE `m_loan_tranche_charges` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_id` BIGINT(20) NOT NULL, - `charge_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`id`) ) ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V273__oauth_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V273__oauth_changes.sql index d85f648ba..73a635168 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V273__oauth_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V273__oauth_changes.sql @@ -26,13 +26,13 @@ CREATE TABLE `oauth_client_details` ( `authorized_grant_types` varchar(256) DEFAULT NULL, `web_server_redirect_uri` varchar(256) DEFAULT NULL, `authorities` varchar(256) DEFAULT NULL, - `access_token_validity` int(11) DEFAULT NULL, - `refresh_token_validity` int(11) DEFAULT NULL, + `access_token_validity` INT DEFAULT NULL, + `refresh_token_validity` INT DEFAULT NULL, `additional_information` varchar(4096) DEFAULT NULL, `autoapprove` BIT(1) NULL DEFAULT NULL, PRIMARY KEY (`client_id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1; @@ -48,7 +48,7 @@ CREATE TABLE `oauth_access_token` ( `authentication` blob, `refresh_token` varchar(256) DEFAULT NULL ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1; @@ -57,6 +57,6 @@ CREATE TABLE `oauth_refresh_token` ( `token` blob, `authentication` blob ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V275__loan_transaction_to_repayment_schedule_mapping.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V275__loan_transaction_to_repayment_schedule_mapping.sql index f801e7793..d97751743 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V275__loan_transaction_to_repayment_schedule_mapping.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V275__loan_transaction_to_repayment_schedule_mapping.sql @@ -18,9 +18,9 @@ -- CREATE TABLE `m_loan_transaction_repayment_schedule_mapping` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_transaction_id` BIGINT(20) NOT NULL, - `loan_repayment_schedule_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_transaction_id` BIGINT NOT NULL, + `loan_repayment_schedule_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, `principal_portion_derived` DECIMAL(19,6) NULL DEFAULT NULL, `interest_portion_derived` DECIMAL(19,6) NULL DEFAULT NULL, diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V277__Loan_Product_Provisioning.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V277__Loan_Product_Provisioning.sql index b9a98d6b3..ce3ca9654 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V277__Loan_Product_Provisioning.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V277__Loan_Product_Provisioning.sql @@ -18,13 +18,13 @@ -- CREATE TABLE `m_provision_category` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `category_name` VARCHAR(100) NOT NULL, `description` VARCHAR(300) NULL, PRIMARY KEY (`id`), UNIQUE INDEX `category_name` (`category_name`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1 ; @@ -35,11 +35,11 @@ INSERT INTO `m_provision_category` (`category_name`, `description`) VALUES ('DOU INSERT INTO `m_provision_category` (`category_name`, `description`) VALUES ('LOSS', 'Principal and/or Interest overdue by y days'); CREATE TABLE `m_provisioning_criteria` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `criteria_name` VARCHAR(200) NOT NULL, - `createdby_id` BIGINT(20) NULL DEFAULT NULL, + `createdby_id` BIGINT NULL DEFAULT NULL, `created_date` DATETIME NULL DEFAULT NULL, - `lastmodifiedby_id` BIGINT(20) NULL DEFAULT NULL, + `lastmodifiedby_id` BIGINT NULL DEFAULT NULL, `lastmodified_date` DATETIME NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `criteria_name` (`criteria_name`), @@ -48,14 +48,14 @@ CREATE TABLE `m_provisioning_criteria` ( ); CREATE TABLE `m_provisioning_criteria_definition` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `criteria_id` BIGINT(20) NOT NULL, - `category_id` BIGINT(20) NOT NULL, - `min_age` BIGINT(20) NOT NULL, - `max_age` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `criteria_id` BIGINT NOT NULL, + `category_id` BIGINT NOT NULL, + `min_age` BIGINT NOT NULL, + `max_age` BIGINT NOT NULL, `provision_percentage` DECIMAL(5,2) NOT NULL, - `liability_account` BIGINT(20), - `expense_account` BIGINT(20), + `liability_account` BIGINT, + `expense_account` BIGINT, PRIMARY KEY (`id`), FOREIGN KEY (`criteria_id`) REFERENCES `m_provisioning_criteria` (`id`), FOREIGN KEY (`category_id`) REFERENCES `m_provision_category` (`id`), @@ -64,9 +64,9 @@ CREATE TABLE `m_provisioning_criteria_definition` ( ); CREATE TABLE `m_loanproduct_provisioning_mapping` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `product_id` BIGINT(20) NOT NULL, - `criteria_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `criteria_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `product_id` (`product_id`), FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`), @@ -74,11 +74,11 @@ CREATE TABLE `m_loanproduct_provisioning_mapping` ( ); CREATE TABLE `m_provisioning_history` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `journal_entry_created` BIT(1) DEFAULT 0, - `createdby_id` BIGINT(20) NULL DEFAULT NULL, + `createdby_id` BIGINT NULL DEFAULT NULL, `created_date` DATE NULL DEFAULT NULL, - `lastmodifiedby_id` BIGINT(20) NULL DEFAULT NULL, + `lastmodifiedby_id` BIGINT NULL DEFAULT NULL, `lastmodified_date` DATE NULL DEFAULT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), @@ -86,17 +86,17 @@ CREATE TABLE `m_provisioning_history` ( ); CREATE TABLE `m_loanproduct_provisioning_entry` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `history_id` BIGINT(20) NOT NULL, - `criteria_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `history_id` BIGINT NOT NULL, + `criteria_id` BIGINT NOT NULL, `currency_code` VARCHAR(3) NOT NULL, - `office_id` BIGINT(20) NOT NULL, - `product_id` BIGINT(20) NOT NULL, - `category_id` BIGINT(20) NOT NULL, - `overdue_in_days` BIGINT(20) DEFAULT 0, + `office_id` BIGINT NOT NULL, + `product_id` BIGINT NOT NULL, + `category_id` BIGINT NOT NULL, + `overdue_in_days` BIGINT DEFAULT 0, `reseve_amount` DECIMAL(20,6) DEFAULT 0, - `liability_account` BIGINT(20) NULL DEFAULT NULL, - `expense_account` BIGINT(20) NULL DEFAULT NULL, + `liability_account` BIGINT NULL DEFAULT NULL, + `expense_account` BIGINT NULL DEFAULT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`history_id`) REFERENCES `m_provisioning_history` (`id`), FOREIGN KEY (`criteria_id`) REFERENCES `m_provisioning_criteria` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V278__LoanTransactionProcessingStrategy.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V278__LoanTransactionProcessingStrategy.sql index 4c17984ac..cd1c06719 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V278__LoanTransactionProcessingStrategy.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V278__LoanTransactionProcessingStrategy.sql @@ -27,7 +27,7 @@ WHERE code='principal-interest-penalties-fees-order-strategy' ; UPDATE `ref_loan_transaction_processing_strategy` SET `name`='Interest, Principal, Penalties, Fees Order' WHERE code='interest-principal-penalties-fees-order-strategy' ; -ALTER TABLE `ref_loan_transaction_processing_strategy`ADD `sort_order` INT(4) ; +ALTER TABLE `ref_loan_transaction_processing_strategy`ADD `sort_order` INT ; UPDATE `ref_loan_transaction_processing_strategy` SET `sort_order`=1 WHERE code='mifos-standard-strategy' ; UPDATE `ref_loan_transaction_processing_strategy` SET `sort_order`=2 WHERE code='rbi-india-strategy' ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V279__floating_rates.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V279__floating_rates.sql index 034ee997d..0f32552b1 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V279__floating_rates.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V279__floating_rates.sql @@ -18,28 +18,28 @@ -- CREATE TABLE `m_floating_rates` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(200) NOT NULL, `is_base_lending_rate` BIT(1) NOT NULL DEFAULT 0, `is_active` BIT(1) NOT NULL DEFAULT 1, - `createdby_id` BIGINT(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` DATETIME NOT NULL, - `lastmodifiedby_id` BIGINT(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` DATETIME NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `unq_name` (`name`) ); CREATE TABLE `m_floating_rates_periods` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `floating_rates_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `floating_rates_id` BIGINT NOT NULL, `from_date` DATETIME NOT NULL, `interest_rate` DECIMAL(19,6) NOT NULL, `is_differential_to_base_lending_rate` BIT(1) NOT NULL DEFAULT 0, `is_active` BIT(1) NOT NULL DEFAULT 1, - `createdby_id` BIGINT(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` DATETIME NOT NULL, - `lastmodifiedby_id` BIGINT(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` DATETIME NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_mappings_m_floating_rates` FOREIGN KEY (`floating_rates_id`) REFERENCES `m_floating_rates` (`id`) @@ -48,13 +48,13 @@ CREATE TABLE `m_floating_rates_periods` ( ALTER TABLE `m_product_loan` ADD COLUMN `is_linked_to_floating_interest_rates` BIT(1) NOT NULL DEFAULT 0 AFTER `fund_id`, MODIFY COLUMN `nominal_interest_rate_per_period` DECIMAL(19,6) NULL DEFAULT NULL, -MODIFY COLUMN `interest_period_frequency_enum` SMALLINT(5) NULL DEFAULT NULL, +MODIFY COLUMN `interest_period_frequency_enum` SMALLINT NULL DEFAULT NULL, MODIFY COLUMN `annual_nominal_interest_rate` DECIMAL(19,6) NULL DEFAULT NULL; CREATE TABLE `m_product_loan_floating_rates` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` BIGINT(20) NOT NULL, - `floating_rates_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, + `floating_rates_id` BIGINT NOT NULL, `interest_rate_differential` DECIMAL(19,6) NOT NULL DEFAULT 0, `min_differential_lending_rate` DECIMAL(19,6) NOT NULL DEFAULT 0, `default_differential_lending_rate` DECIMAL(19,6) NOT NULL DEFAULT 0, @@ -69,7 +69,7 @@ ALTER TABLE `m_loan` ADD COLUMN `is_floating_interest_rate` BIT(1) NULL DEFAULT 0 AFTER `arrearstolerance_amount`, ADD COLUMN `interest_rate_differential` DECIMAL(19,6) NULL DEFAULT 0 AFTER `is_floating_interest_rate`, MODIFY COLUMN `nominal_interest_rate_per_period` DECIMAL(19,6) NULL DEFAULT NULL, -MODIFY COLUMN `interest_period_frequency_enum` SMALLINT(5) NULL DEFAULT NULL, +MODIFY COLUMN `interest_period_frequency_enum` SMALLINT NULL DEFAULT NULL, MODIFY COLUMN `annual_nominal_interest_rate` DECIMAL(19,6) NULL DEFAULT NULL; INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V27__add-loan-type-column-to-loan-table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V27__add-loan-type-column-to-loan-table.sql index e4f489425..1340edb24 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V27__add-loan-type-column-to-loan-table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V27__add-loan-type-column-to-loan-table.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_loan` - ADD COLUMN `loan_type_enum` SMALLINT(5) NOT NULL AFTER `loan_status_id`; \ No newline at end of file + ADD COLUMN `loan_type_enum` SMALLINT NOT NULL AFTER `loan_status_id`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V280__spm_framework_initial_tables.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V280__spm_framework_initial_tables.sql index 1fb3d1540..0616d0f91 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V280__spm_framework_initial_tables.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V280__spm_framework_initial_tables.sql @@ -18,7 +18,7 @@ -- CREATE TABLE `m_surveys` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `a_key` VARCHAR(32) NOT NULL, `a_name` VARCHAR(255) NOT NULL, `description` VARCHAR(4000) NULL, @@ -29,59 +29,59 @@ CREATE TABLE `m_surveys` ( ); CREATE TABLE `m_survey_components` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `survey_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `a_key` VARCHAR(32) NOT NULL, `a_text` VARCHAR(255) NOT NULL, `description` VARCHAR(4000) NULL, - `sequence_no` INT(4) NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) ); CREATE TABLE `m_survey_questions` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `survey_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `component_key` VARCHAR(32) NULL, `a_key` VARCHAR(32) NOT NULL, `a_text` VARCHAR(255) NOT NULL, `description` VARCHAR(4000) NULL, - `sequence_no` INT(4) NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) ); CREATE TABLE `m_survey_responses` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `question_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `question_id` BIGINT NOT NULL, `a_text` VARCHAR(255) NOT NULL, - `a_value` INT(4) NOT NULL, - `sequence_no` INT(4) NOT NULL, + `a_value` INT NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`question_id`) REFERENCES `m_survey_questions` (`id`) ); CREATE TABLE `m_survey_lookup_tables` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `survey_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `a_key` VARCHAR(255) NOT NULL, - `description` INT(4) NULL, - `value_from` INT(4) NOT NULL, - `value_to` INT(4) NOT NULL, + `description` INT NULL, + `value_from` INT NOT NULL, + `value_to` INT NOT NULL, `score` DECIMAL(5, 2) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) ); CREATE TABLE `m_survey_scorecards` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `survey_id` BIGINT(20) NOT NULL, - `question_id` BIGINT(20) NOT NULL, - `response_id` BIGINT(20) NOT NULL, - `staff_id` BIGINT(20) NOT NULL, - `client_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, + `question_id` BIGINT NOT NULL, + `response_id` BIGINT NOT NULL, + `staff_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, `created_on` DATETIME NULL DEFAULT NULL, - `a_value` INT(4) NOT NULL, + `a_value` INT NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`), FOREIGN KEY (`question_id`) REFERENCES `m_survey_questions` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V282__CustomerSelfService.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V282__CustomerSelfService.sql index 59ab81abe..7234093cc 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V282__CustomerSelfService.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V282__CustomerSelfService.sql @@ -21,14 +21,14 @@ ALTER TABLE `m_appuser` ADD COLUMN `is_self_service_user` BIT(1) NOT NULL DEFAULT 0; CREATE TABLE `m_selfservice_user_client_mapping` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `appuser_id` BIGINT(20) NOT NULL, - `client_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `appuser_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `appuser_id_client_id` (`appuser_id`, `client_id`), CONSTRAINT `m_selfservice_appuser_id` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_selfservice_client_id` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V283__Variable_Installments.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V283__Variable_Installments.sql index 621f463d3..9d98f29d1 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V283__Variable_Installments.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V283__Variable_Installments.sql @@ -21,10 +21,10 @@ ALTER TABLE `m_product_loan` ADD COLUMN `allow_variabe_installments` BIT(1) NOT NULL DEFAULT 0 AFTER `is_linked_to_floating_interest_rates` ; CREATE TABLE `m_product_loan_variable_installment_config` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` BIGINT(20) NOT NULL, - `minimum_gap` INT(4) NOT NULL, - `maximum_gap` INT(4) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, + `minimum_gap` INT NOT NULL, + `maximum_gap` INT NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_mappings_m_variable_product_loan_id` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) ); @@ -40,6 +40,6 @@ ALTER TABLE `m_loan_term_variations` CHANGE COLUMN `term_value` `decimal_value` DECIMAL(19,6) NULL AFTER `applicable_date`, ADD COLUMN `date_value` DATE NULL AFTER `decimal_value`, ADD COLUMN `is_specific_to_installment` TINYINT NOT NULL DEFAULT '0' AFTER `date_value`, - ADD COLUMN `applied_on_loan_status` SMALLINT(5) NOT NULL AFTER `is_specific_to_installment`; + ADD COLUMN `applied_on_loan_status` SMALLINT NOT NULL AFTER `is_specific_to_installment`; UPDATE `m_loan_term_variations` SET `applied_on_loan_status`=300; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V284__update_codevalue.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V284__update_codevalue.sql index 67e803e48..d56dd205f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V284__update_codevalue.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V284__update_codevalue.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_code_value` - ADD COLUMN `is_active` TINYINT(1) NOT NULL DEFAULT '1' AFTER `code_score`; \ No newline at end of file + ADD COLUMN `is_active` tinyint NOT NULL DEFAULT '1' AFTER `code_score`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V286__partial_period_interest_calcualtion.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V286__partial_period_interest_calcualtion.sql index b0a901e62..1f59e8959 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V286__partial_period_interest_calcualtion.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V286__partial_period_interest_calcualtion.sql @@ -18,10 +18,10 @@ -- ALTER TABLE `m_product_loan` - ADD COLUMN `allow_partial_period_interest_calcualtion` TINYINT(1) NOT NULL DEFAULT '0' AFTER `interest_calculated_in_period_enum`; + ADD COLUMN `allow_partial_period_interest_calcualtion` tinyint NOT NULL DEFAULT '0' AFTER `interest_calculated_in_period_enum`; ALTER TABLE `m_loan` - ADD COLUMN `allow_partial_period_interest_calcualtion` TINYINT(1) NOT NULL DEFAULT '0' AFTER `interest_calculated_in_period_enum`; + ADD COLUMN `allow_partial_period_interest_calcualtion` tinyint NOT NULL DEFAULT '0' AFTER `interest_calculated_in_period_enum`; UPDATE m_product_loan mpl inner join (select mp.id as productId from m_product_loan mp where mp.interest_calculated_in_period_enum = 1 and (mp.interest_recalculation_enabled = 1 or mp.allow_multiple_disbursals = 1 or mp.is_linked_to_floating_interest_rates =1 or mp.allow_variabe_installments =1)) x on x.productId = mpl.id SET mpl.allow_partial_period_interest_calcualtion = 1; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V287__alter_spm_scorecard.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V287__alter_spm_scorecard.sql index e94effc48..6bc38a337 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V287__alter_spm_scorecard.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V287__alter_spm_scorecard.sql @@ -20,14 +20,14 @@ SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `m_survey_scorecards`; CREATE TABLE `m_survey_scorecards` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `survey_id` BIGINT(20) NOT NULL, - `question_id` BIGINT(20) NOT NULL, - `response_id` BIGINT(20) NOT NULL, - `user_id` BIGINT(20) NOT NULL, - `client_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, + `question_id` BIGINT NOT NULL, + `response_id` BIGINT NOT NULL, + `user_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, `created_on` DATETIME NULL DEFAULT NULL, - `a_value` INT(4) NOT NULL, + `a_value` INT NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`), FOREIGN KEY (`question_id`) REFERENCES `m_survey_questions` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V289__client_non_person.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V289__client_non_person.sql index b7311e233..9a770df14 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V289__client_non_person.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V289__client_non_person.sql @@ -24,15 +24,15 @@ INSERT INTO `m_code` (`code_name`, `is_system_defined`) values INSERT INTO `m_code` (`code_name`, `is_system_defined`) values ("Main Business Line", true); -ALTER TABLE `m_client` ADD `legal_form_enum` INT(5); +ALTER TABLE `m_client` ADD `legal_form_enum` INT; CREATE TABLE `m_client_non_person` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NOT NULL UNIQUE, - `constitution_cv_id` INT(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL UNIQUE, + `constitution_cv_id` INT NOT NULL, `incorp_no` varchar(50), `incorp_validity_till` DATETIME, - `main_business_line_cv_id` INT(11), + `main_business_line_cv_id` INT, `remarks` varchar(150), PRIMARY KEY (`id`), INDEX `FK_client_id` (`client_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V28__accounting-abstractions-and-autoposting.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V28__accounting-abstractions-and-autoposting.sql index c5119dd06..5b6e3a900 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V28__accounting-abstractions-and-autoposting.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V28__accounting-abstractions-and-autoposting.sql @@ -18,13 +18,13 @@ -- CREATE TABLE `acc_accounting_rule` ( - `id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL, `name` VARCHAR(100) NULL DEFAULT NULL, - `office_id` BIGINT(20) NULL DEFAULT NULL, - `debit_account_id` BIGINT(20) NOT NULL, - `credit_account_id` BIGINT(20) NOT NULL, + `office_id` BIGINT NULL DEFAULT NULL, + `debit_account_id` BIGINT NOT NULL, + `credit_account_id` BIGINT NOT NULL, `description` VARCHAR(500) NULL DEFAULT NULL, - `system_defined` TINYINT(1) NOT NULL DEFAULT '0', + `system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE INDEX `accounting_rule_name_unique` (`name`), INDEX `FK_acc_accounting_rule_acc_gl_account_debit` (`debit_account_id`), @@ -34,20 +34,20 @@ CREATE TABLE `acc_accounting_rule` ( CONSTRAINT `FK_acc_accounting_rule_acc_gl_account_debit` FOREIGN KEY (`debit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_acc_accounting_rule_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; CREATE TABLE `acc_auto_posting` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `description` VARCHAR(500) NULL DEFAULT NULL, - `office_id` BIGINT(20) NULL DEFAULT NULL, - `product_type_enum` SMALLINT(5) NOT NULL, - `product_id` BIGINT(20) NULL DEFAULT NULL, - `charge_id` BIGINT(20) NULL DEFAULT NULL, - `event` INT(11) NOT NULL, - `event_attribute` INT(11) NULL DEFAULT NULL, - `accounting_rule_id` BIGINT(20) NOT NULL, + `office_id` BIGINT NULL DEFAULT NULL, + `product_type_enum` SMALLINT NOT NULL, + `product_id` BIGINT NULL DEFAULT NULL, + `charge_id` BIGINT NULL DEFAULT NULL, + `event` INT NOT NULL, + `event_attribute` INT NULL DEFAULT NULL, + `accounting_rule_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `auto_posting_name_unique` (`name`), INDEX `FK_acc_auto_posting_m_office` (`office_id`), @@ -61,5 +61,5 @@ CREATE TABLE `acc_auto_posting` ( CONSTRAINT `FK_acc_auto_posting_m_code_value` FOREIGN KEY (`event_attribute`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_acc_auto_posting_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V293__interest_rate_chart_support_for_amounts.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V293__interest_rate_chart_support_for_amounts.sql index 15ed5111b..8edf01a25 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V293__interest_rate_chart_support_for_amounts.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V293__interest_rate_chart_support_for_amounts.sql @@ -18,15 +18,15 @@ -- ALTER TABLE `m_interest_rate_slab` - CHANGE COLUMN `from_period` `from_period` INT(11) NULL DEFAULT NULL, - CHANGE COLUMN `period_type_enum` `period_type_enum` SMALLINT(5) NULL DEFAULT NULL ; + CHANGE COLUMN `from_period` `from_period` INT NULL DEFAULT NULL, + CHANGE COLUMN `period_type_enum` `period_type_enum` SMALLINT NULL DEFAULT NULL ; ALTER TABLE `m_interest_rate_chart` - ADD COLUMN `is_primary_grouping_by_amount` TINYINT(1) NOT NULL DEFAULT '0'; + ADD COLUMN `is_primary_grouping_by_amount` tinyint NOT NULL DEFAULT '0'; ALTER TABLE `m_savings_account_interest_rate_chart` ADD COLUMN `is_primary_grouping_by_amount` TINYINT NOT NULL DEFAULT '0' ; ALTER TABLE `m_savings_account_interest_rate_slab` - CHANGE COLUMN `period_type_enum` `period_type_enum` SMALLINT(5) NULL DEFAULT NULL, - CHANGE COLUMN `from_period` `from_period` INT(11) NULL DEFAULT NULL; \ No newline at end of file + CHANGE COLUMN `period_type_enum` `period_type_enum` SMALLINT NULL DEFAULT NULL, + CHANGE COLUMN `from_period` `from_period` INT NULL DEFAULT NULL; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V298__savings_interest_tax.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V298__savings_interest_tax.sql index e3a3ceb31..f8f51949d 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V298__savings_interest_tax.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V298__savings_interest_tax.sql @@ -18,17 +18,17 @@ -- CREATE TABLE `m_tax_component` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `percentage` DECIMAL(19,6) NOT NULL, - `debit_account_type_enum` SMALLINT(2) NULL DEFAULT NULL, - `debit_account_id` BIGINT(20) NULL DEFAULT NULL, - `credit_account_type_enum` SMALLINT(2) NULL DEFAULT NULL, - `credit_account_id` BIGINT(20) NULL DEFAULT NULL, + `debit_account_type_enum` SMALLINT NULL DEFAULT NULL, + `debit_account_id` BIGINT NULL DEFAULT NULL, + `credit_account_type_enum` SMALLINT NULL DEFAULT NULL, + `credit_account_id` BIGINT NULL DEFAULT NULL, `start_date` DATE NOT NULL, - `createdby_id` BIGINT(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` DATETIME NOT NULL, - `lastmodifiedby_id` BIGINT(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` DATETIME NOT NULL, PRIMARY KEY (`id`), INDEX `FK_tax_component_debit_gl_account` (`debit_account_id`), @@ -42,14 +42,14 @@ CREATE TABLE `m_tax_component` ( ); CREATE TABLE `m_tax_component_history` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `tax_component_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `tax_component_id` BIGINT NOT NULL, `percentage` DECIMAL(19,6) NOT NULL, `start_date` DATE NOT NULL, `end_date` DATE NOT NULL, - `createdby_id` BIGINT(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` DATETIME NOT NULL, - `lastmodifiedby_id` BIGINT(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` DATETIME NOT NULL, PRIMARY KEY (`id`), INDEX `FK_tax_component_history_tax_component_id` (`tax_component_id`), @@ -61,11 +61,11 @@ CREATE TABLE `m_tax_component_history` ( ); CREATE TABLE `m_tax_group` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, - `createdby_id` BIGINT(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` DATETIME NOT NULL, - `lastmodifiedby_id` BIGINT(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` DATETIME NOT NULL, PRIMARY KEY (`id`), INDEX `FK_tax_group_createdby` (`createdby_id`), @@ -75,14 +75,14 @@ CREATE TABLE `m_tax_group` ( ); CREATE TABLE `m_tax_group_mappings` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `tax_group_id` BIGINT(20) NOT NULL, - `tax_component_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `tax_group_id` BIGINT NOT NULL, + `tax_component_id` BIGINT NOT NULL, `start_date` DATE NOT NULL, `end_date` DATE NULL DEFAULT NULL, - `createdby_id` BIGINT(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` DATETIME NOT NULL, - `lastmodifiedby_id` BIGINT(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` DATETIME NOT NULL, PRIMARY KEY (`id`), INDEX `FK_tax_group_mappings_tax_group` (`tax_group_id`), @@ -96,7 +96,7 @@ CREATE TABLE `m_tax_group_mappings` ( ); ALTER TABLE `m_charge` - ADD COLUMN `tax_group_id` BIGINT(20) NULL DEFAULT NULL, + ADD COLUMN `tax_group_id` BIGINT NULL DEFAULT NULL, ADD CONSTRAINT `FK_m_charge_m_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`); ALTER TABLE `m_savings_product` @@ -111,9 +111,9 @@ ALTER TABLE `m_savings_account` ADD CONSTRAINT `FK_savings_account_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`); CREATE TABLE `m_savings_account_transaction_tax_details` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `savings_transaction_id` BIGINT(20) NOT NULL, - `tax_component_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_transaction_id` BIGINT NOT NULL, + `tax_component_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_savings_account_transaction_tax_details_savings_transaction` FOREIGN KEY (`savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V299__share_products.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V299__share_products.sql index 969c419ea..69d4c3f6b 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V299__share_products.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V299__share_products.sql @@ -18,7 +18,7 @@ -- CREATE TABLE `m_share_product` ( -`id` BIGINT(20) NOT NULL AUTO_INCREMENT, +`id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(200) NOT NULL, `short_name` VARCHAR(4) NOT NULL, `external_id` VARCHAR(100) NULL DEFAULT NULL, @@ -26,26 +26,26 @@ CREATE TABLE `m_share_product` ( `start_date` DATETIME NULL DEFAULT NULL, `end_date` DATETIME NULL DEFAULT NULL, `currency_code` VARCHAR(3) NOT NULL, -`currency_digits` SMALLINT(5) NOT NULL, -`currency_multiplesof` SMALLINT(5) NULL DEFAULT NULL, -`total_shares` BIGINT(20) NOT NULL, -`issued_shares` BIGINT(20) NULL DEFAULT NULL, -`totalsubscribed_shares` BIGINT(20) NULL DEFAULT NULL, +`currency_digits` SMALLINT NOT NULL, +`currency_multiplesof` SMALLINT NULL DEFAULT NULL, +`total_shares` BIGINT NOT NULL, +`issued_shares` BIGINT NULL DEFAULT NULL, +`totalsubscribed_shares` BIGINT NULL DEFAULT NULL, `unit_price` DECIMAL(10,2) NOT NULL, `capital_amount` DECIMAL(20,2) NOT NULL, -`minimum_client_shares` BIGINT(20) NULL DEFAULT NULL, -`nominal_client_shares` BIGINT(20) NOT NULL, -`maximum_client_shares` BIGINT(20) NULL DEFAULT NULL, +`minimum_client_shares` BIGINT NULL DEFAULT NULL, +`nominal_client_shares` BIGINT NOT NULL, +`maximum_client_shares` BIGINT NULL DEFAULT NULL, `minimum_active_period_frequency` DECIMAL(19,6) NULL DEFAULT NULL, -`minimum_active_period_frequency_enum` SMALLINT(5) NULL DEFAULT NULL, +`minimum_active_period_frequency_enum` SMALLINT NULL DEFAULT NULL, `lockin_period_frequency` DECIMAL(19,6) NULL DEFAULT NULL, -`lockin_period_frequency_enum` SMALLINT(5) NULL DEFAULT NULL, -`allow_dividends_inactive_clients` SMALLINT(1) NULL DEFAULT 0, -`createdby_id` BIGINT(20) NULL DEFAULT NULL, +`lockin_period_frequency_enum` SMALLINT NULL DEFAULT NULL, +`allow_dividends_inactive_clients` SMALLINT NULL DEFAULT 0, +`createdby_id` BIGINT NULL DEFAULT NULL, `created_date` DATETIME NULL DEFAULT NULL, -`lastmodifiedby_id` BIGINT(20) NULL DEFAULT NULL, +`lastmodifiedby_id` BIGINT NULL DEFAULT NULL, `lastmodified_date` DATETIME NULL DEFAULT NULL, -`accounting_type` SMALLINT(2) NOT NULL, +`accounting_type` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `name` (`name`), CONSTRAINT `m_share_product_ibfk_1` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), @@ -53,8 +53,8 @@ CONSTRAINT `m_share_product_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES ) ; CREATE TABLE `m_share_product_market_price` ( -`id` BIGINT(20) NOT NULL AUTO_INCREMENT, -`product_id` BIGINT(20) NOT NULL, +`id` BIGINT NOT NULL AUTO_INCREMENT, +`product_id` BIGINT NOT NULL, `from_date` DATE NULL DEFAULT NULL, `share_value` DECIMAL(10,2) NOT NULL, PRIMARY KEY (`id`), @@ -62,43 +62,43 @@ CONSTRAINT `m_share_product_market_price_ibfk_1` FOREIGN KEY (`product_id`) REFE ) ; CREATE TABLE `m_share_product_charge` ( -`product_id` BIGINT(20) NOT NULL, -`charge_id` BIGINT(20) NOT NULL, +`product_id` BIGINT NOT NULL, +`charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_id`, `charge_id`), CONSTRAINT `m_share_product_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_share_product_charge_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`) ) ; CREATE TABLE `m_share_account` ( -`id` BIGINT(20) NOT NULL AUTO_INCREMENT, +`id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` VARCHAR(50) NOT NULL, -`product_id` BIGINT(20) NOT NULL, -`client_id` BIGINT(20) NOT NULL, +`product_id` BIGINT NOT NULL, +`client_id` BIGINT NOT NULL, `external_id` VARCHAR(100) NULL DEFAULT NULL, -`status_enum` SMALLINT(5) NOT NULL DEFAULT '300', -`total_approved_shares` BIGINT(20) NULL DEFAULT NULL, -`total_pending_shares` BIGINT(20) NULL DEFAULT NULL, +`status_enum` SMALLINT NOT NULL DEFAULT '300', +`total_approved_shares` BIGINT NULL DEFAULT NULL, +`total_pending_shares` BIGINT NULL DEFAULT NULL, `submitted_date` DATE NOT NULL, -`submitted_userid` BIGINT(20) NULL DEFAULT NULL, +`submitted_userid` BIGINT NULL DEFAULT NULL, `approved_date` DATE NULL DEFAULT NULL, -`approved_userid` BIGINT(20) NULL DEFAULT NULL, +`approved_userid` BIGINT NULL DEFAULT NULL, `rejected_date` DATE NULL DEFAULT NULL, -`rejected_userid` BIGINT(20) NULL DEFAULT NULL, +`rejected_userid` BIGINT NULL DEFAULT NULL, `activated_date` DATE NULL DEFAULT NULL, -`activated_userid` BIGINT(20) NULL DEFAULT NULL, +`activated_userid` BIGINT NULL DEFAULT NULL, `closed_date` DATE NULL DEFAULT NULL, -`closed_userid` BIGINT(20) NULL DEFAULT NULL, +`closed_userid` BIGINT NULL DEFAULT NULL, `currency_code` VARCHAR(3) NOT NULL, -`currency_digits` SMALLINT(5) NOT NULL, -`currency_multiplesof` SMALLINT(5) NULL DEFAULT NULL, -`savings_account_id` BIGINT(20) NOT NULL, +`currency_digits` SMALLINT NOT NULL, +`currency_multiplesof` SMALLINT NULL DEFAULT NULL, +`savings_account_id` BIGINT NOT NULL, `minimum_active_period_frequency` DECIMAL(19,6) NULL DEFAULT NULL, -`minimum_active_period_frequency_enum` SMALLINT(5) NULL DEFAULT NULL, +`minimum_active_period_frequency_enum` SMALLINT NULL DEFAULT NULL, `lockin_period_frequency` DECIMAL(19,6) NULL DEFAULT NULL, -`lockin_period_frequency_enum` SMALLINT(5) NULL DEFAULT NULL, -`allow_dividends_inactive_clients` SMALLINT(1) NULL DEFAULT 0, +`lockin_period_frequency_enum` SMALLINT NULL DEFAULT NULL, +`allow_dividends_inactive_clients` SMALLINT NULL DEFAULT 0, `created_date` DATETIME NULL DEFAULT NULL, -`lastmodifiedby_id` BIGINT(20) NULL DEFAULT NULL, +`lastmodifiedby_id` BIGINT NULL DEFAULT NULL, `lastmodified_date` DATETIME NULL DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `m_share_account_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`), @@ -113,12 +113,12 @@ CONSTRAINT `m_share_account_ibfk_9` FOREIGN KEY (`client_id`) REFERENCES `m_clie ) ; CREATE TABLE `m_share_account_charge` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `account_id` BIGINT(20) NOT NULL, - `charge_id` BIGINT(20) NOT NULL, - `charge_time_enum` SMALLINT(5) NOT NULL, - `charge_calculation_enum` SMALLINT(5) NOT NULL, - `charge_payment_mode_enum` SMALLINT(5) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, + `charge_payment_mode_enum` SMALLINT NOT NULL DEFAULT '0', `calculation_percentage` DECIMAL(19,6) NULL DEFAULT NULL, `calculation_on_amount` DECIMAL(19,6) NULL DEFAULT NULL, `charge_amount_or_percentage` DECIMAL(19,6) NULL DEFAULT NULL, @@ -127,11 +127,11 @@ CREATE TABLE `m_share_account_charge` ( `amount_waived_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_writtenoff_derived` DECIMAL(19,6) NULL DEFAULT NULL, `amount_outstanding_derived` DECIMAL(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` TINYINT(1) NOT NULL DEFAULT '0', - `waived` TINYINT(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', `min_cap` DECIMAL(19,6) NULL DEFAULT NULL, `max_cap` DECIMAL(19,6) NULL DEFAULT NULL, - `is_active` TINYINT(1) NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), INDEX `charge_id` (`charge_id`), INDEX `m_share_account_charge_ibfk_2` (`account_id`), @@ -141,25 +141,25 @@ CREATE TABLE `m_share_account_charge` ( CREATE TABLE `m_share_account_transactions` ( -`id` BIGINT(20) NOT NULL AUTO_INCREMENT, -`account_id` BIGINT(20) NOT NULL, +`id` BIGINT NOT NULL AUTO_INCREMENT, +`account_id` BIGINT NOT NULL, `transaction_date` DATE NULL DEFAULT NULL, -`total_shares` BIGINT(20) NULL DEFAULT NULL, +`total_shares` BIGINT NULL DEFAULT NULL, `unit_price` DECIMAL(10,2) NULL DEFAULT NULL, `amount` DECIMAL(20,2) NULL DEFAULT NULL, `charge_amount` DECIMAL(20,2) NULL DEFAULT NULL, `amount_paid` DECIMAL(20,2) NULL DEFAULT NULL, -`status_enum` SMALLINT(5) NOT NULL DEFAULT '300', -`type_enum` SMALLINT(5) NULL DEFAULT NULL, -`is_active` TINYINT(1) NOT NULL DEFAULT '1', +`status_enum` SMALLINT NOT NULL DEFAULT '300', +`type_enum` SMALLINT NULL DEFAULT NULL, +`is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), CONSTRAINT `m_share_account_purchased_shares_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `m_share_account` (`id`) ) ; CREATE TABLE `m_share_account_charge_paid_by` ( -`id` BIGINT(20) NOT NULL AUTO_INCREMENT, -`share_transaction_id` BIGINT(20) NULL DEFAULT NULL, -`charge_transaction_id` BIGINT(20) NULL DEFAULT NULL, +`id` BIGINT NOT NULL AUTO_INCREMENT, +`share_transaction_id` BIGINT NULL DEFAULT NULL, +`charge_transaction_id` BIGINT NULL DEFAULT NULL, `amount` DECIMAL(20,2) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `m_share_account_transactions_charge_mapping_ibfk1` FOREIGN KEY (`share_transaction_id`) REFERENCES `m_share_account_transactions` (`id`), @@ -167,15 +167,15 @@ CONSTRAINT `m_share_account_transactions_charge_mapping_ibfk2` FOREIGN KEY (`cha ) ; CREATE TABLE `m_share_product_dividend_pay_out` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `product_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, `dividend_period_start_date` DATE NOT NULL, `dividend_period_end_date` DATE NOT NULL, - `status` SMALLINT(3) NOT NULL, - `createdby_id` BIGINT(20) NULL DEFAULT NULL, + `status` SMALLINT NOT NULL, + `createdby_id` BIGINT NULL DEFAULT NULL, `created_date` DATETIME NULL DEFAULT NULL, - `lastmodifiedby_id` BIGINT(20) NULL DEFAULT NULL, + `lastmodifiedby_id` BIGINT NULL DEFAULT NULL, `lastmodified_date` DATETIME NULL DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_m_share_product_dividend_pay_out_product_id` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`), @@ -184,19 +184,19 @@ CREATE TABLE `m_share_product_dividend_pay_out` ( ); CREATE TABLE `m_share_account_dividend_details` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `dividend_pay_out_id` BIGINT(20) NOT NULL, - `account_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `dividend_pay_out_id` BIGINT NOT NULL, + `account_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, - `status` SMALLINT(3) NOT NULL, - `savings_transaction_id` BIGINT(20) NULL, + `status` SMALLINT NOT NULL, + `savings_transaction_id` BIGINT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_m_share_account_dividend_details_dividend_pay_out_id` FOREIGN KEY (`dividend_pay_out_id`) REFERENCES `m_share_product_dividend_pay_out` (`id`), CONSTRAINT `FK_m_share_account_dividend_details_account_id` FOREIGN KEY (`account_id`) REFERENCES `m_share_account` (`id`) ); ALTER TABLE `acc_gl_journal_entry` -ADD COLUMN `share_transaction_id` BIGINT(20) NULL AFTER `payment_details_id`, +ADD COLUMN `share_transaction_id` BIGINT NULL AFTER `payment_details_id`, ADD CONSTRAINT `FK_acc_gl_journal_entry_m_share_account_transaction` FOREIGN KEY (`share_transaction_id`) REFERENCES `m_share_account_transactions` (`id`); INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('SHAREPRODUCT', 'CREATE_DIVIDEND_SHAREPRODUCT', 'SHAREPRODUCT', 'CREATE_DIVIDEND', 0), ('SHAREPRODUCT', 'CREATE_DIVIDEND_SHAREPRODUCT_CHECKER', 'SHAREPRODUCT', 'CREATE_DIVIDEND_CHECKER', 0),('SHAREPRODUCT', 'APPROVE_DIVIDEND_SHAREPRODUCT', 'SHAREPRODUCT', 'APPROVE_DIVIDEND', 0), ('SHAREPRODUCT', 'APPROVE_DIVIDEND_SHAREPRODUCT_CHECKER', 'SHAREPRODUCT', 'APPROVE_DIVIDEND_CHECKER', 0),('SHAREPRODUCT', 'DELETE_DIVIDEND_SHAREPRODUCT', 'SHAREPRODUCT', 'DELETE_DIVIDEND', 0), ('SHAREPRODUCT', 'DELETE_DIVIDEND_SHAREPRODUCT_CHECKER', 'SHAREPRODUCT', 'DELETE_DIVIDEND_CHECKER', 0),('SHAREPRODUCT', 'READ_DIVIDEND_SHAREPRODUCT', 'SHAREPRODUCT', 'READ_DIVIDEND', 0),('SHAREACCOUNT', 'APPROVE_SHAREACCOUNT', 'SHAREACCOUNT', 'APPROVE', 0), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V29__add-support-for-annual-fees-on-savings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V29__add-support-for-annual-fees-on-savings.sql index 2d7f565a3..a305835e7 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V29__add-support-for-annual-fees-on-savings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V29__add-support-for-annual-fees-on-savings.sql @@ -19,13 +19,13 @@ ALTER TABLE `m_savings_product` ADD COLUMN `annual_fee_amount` DECIMAL(19,6) NULL DEFAULT NULL AFTER `withdrawal_fee_type_enum`, -ADD COLUMN `annual_fee_on_month` SMALLINT(5) NULL DEFAULT NULL AFTER `annual_fee_amount`, -ADD COLUMN `annual_fee_on_day` SMALLINT(5) NULL DEFAULT NULL AFTER `annual_fee_on_month`; +ADD COLUMN `annual_fee_on_month` SMALLINT NULL DEFAULT NULL AFTER `annual_fee_amount`, +ADD COLUMN `annual_fee_on_day` SMALLINT NULL DEFAULT NULL AFTER `annual_fee_on_month`; ALTER TABLE `m_savings_account` ADD COLUMN `annual_fee_amount` DECIMAL(19,6) NULL DEFAULT NULL AFTER `withdrawal_fee_type_enum`, -ADD COLUMN `annual_fee_on_month` SMALLINT(5) NULL DEFAULT NULL AFTER `annual_fee_amount`, -ADD COLUMN `annual_fee_on_day` SMALLINT(5) NULL DEFAULT NULL AFTER `annual_fee_on_month`, +ADD COLUMN `annual_fee_on_month` SMALLINT NULL DEFAULT NULL AFTER `annual_fee_amount`, +ADD COLUMN `annual_fee_on_day` SMALLINT NULL DEFAULT NULL AFTER `annual_fee_on_month`, ADD COLUMN `annual_fee_next_due_date` DATE NULL DEFAULT NULL AFTER `annual_fee_on_day`; ALTER TABLE `m_savings_account` diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V301__recurring_moratorium_principal_periods.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V301__recurring_moratorium_principal_periods.sql index cba3b518a..f9c1e4dba 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V301__recurring_moratorium_principal_periods.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V301__recurring_moratorium_principal_periods.sql @@ -18,7 +18,7 @@ -- ALTER TABLE m_product_loan - ADD COLUMN `recurring_moratorium_principal_periods` SMALLINT(5) NULL DEFAULT NULL AFTER `grace_on_principal_periods`; + ADD COLUMN `recurring_moratorium_principal_periods` SMALLINT NULL DEFAULT NULL AFTER `grace_on_principal_periods`; ALTER TABLE m_loan - ADD COLUMN `recurring_moratorium_principal_periods` SMALLINT(5) NULL DEFAULT NULL AFTER `grace_on_principal_periods`; \ No newline at end of file + ADD COLUMN `recurring_moratorium_principal_periods` SMALLINT NULL DEFAULT NULL AFTER `grace_on_principal_periods`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V302__add_status_to_client_identifier.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V302__add_status_to_client_identifier.sql index 1f04d1e95..84e8eef4f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V302__add_status_to_client_identifier.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V302__add_status_to_client_identifier.sql @@ -18,8 +18,8 @@ -- ALTER TABLE `m_client_identifier` - ADD COLUMN `status` INT(5) NOT NULL DEFAULT 300 AFTER `document_key`, + ADD COLUMN `status` INT NOT NULL DEFAULT 300 AFTER `document_key`, DROP INDEX `unique_client_identifier`, - ADD COLUMN `active` INT(5) NULL DEFAULT NULL AFTER `status`, + ADD COLUMN `active` INT NULL DEFAULT NULL AFTER `status`, ADD UNIQUE INDEX `unique_active_client_identifier` (`client_id`, `document_type_id`, `active` ); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V303__Savings_Account_Dormancy.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V303__Savings_Account_Dormancy.sql index 72d70259c..a129dcb75 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V303__Savings_Account_Dormancy.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V303__Savings_Account_Dormancy.sql @@ -18,13 +18,13 @@ -- ALTER TABLE `m_savings_product` -ADD COLUMN `is_dormancy_tracking_active` SMALLINT(1) NULL, -ADD COLUMN `days_to_inactive` INT(11) NULL, -ADD COLUMN `days_to_dormancy` INT(11) NULL, -ADD COLUMN `days_to_escheat` INT(11) NULL; +ADD COLUMN `is_dormancy_tracking_active` SMALLINT NULL, +ADD COLUMN `days_to_inactive` INT NULL, +ADD COLUMN `days_to_dormancy` INT NULL, +ADD COLUMN `days_to_escheat` INT NULL; ALTER TABLE `m_savings_account` -ADD COLUMN `sub_status_enum` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `status_enum`; +ADD COLUMN `sub_status_enum` SMALLINT NOT NULL DEFAULT '0' AFTER `status_enum`; INSERT INTO `job` (`name`, `display_name`, `cron_expression`, `create_time`) VALUES ('Update Savings Dormant Accounts', 'Update Savings Dormant Accounts', '0 0 0 1/1 * ? *', now()); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V304__customer_self_service_third_party_transfers.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V304__customer_self_service_third_party_transfers.sql index 00d07e87f..9e469086d 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V304__customer_self_service_third_party_transfers.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V304__customer_self_service_third_party_transfers.sql @@ -26,13 +26,13 @@ CREATE TABLE `m_selfservice_beneficiaries_tpt` ( `office_id` BIGINT NOT NULL, `client_id` BIGINT NOT NULL, `account_id` BIGINT NOT NULL, - `account_type` SMALLINT(4) NOT NULL, + `account_type` SMALLINT NOT NULL, `transfer_limit` BIGINT NULL DEFAULT 0, `is_active` BIT(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE INDEX `name` (`name`, `app_user_id`, `is_active`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V305__compounding_and_rest_frequency_nth_day_freq_and_insertion_script_for_accrual_job.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V305__compounding_and_rest_frequency_nth_day_freq_and_insertion_script_for_accrual_job.sql index f5af1fdd5..d3ae12af4 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V305__compounding_and_rest_frequency_nth_day_freq_and_insertion_script_for_accrual_job.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V305__compounding_and_rest_frequency_nth_day_freq_and_insertion_script_for_accrual_job.sql @@ -30,14 +30,14 @@ CREATE TABLE `m_loan_interest_recalculation_additional_details` ( ALTER TABLE `m_loan` DROP `repayment_frequency_nth_day_enum`, DROP `repayment_frequency_day_of_week_enum`; -ALTER TABLE `m_product_loan_recalculation_details` ADD `rest_frequency_nth_day_enum` INT(5), ADD `rest_frequency_on_day` INT(5), ADD `rest_frequency_weekday_enum` INT(5), -ADD `compounding_frequency_nth_day_enum` INT(5), ADD `compounding_frequency_on_day` INT(5), ADD `compounding_frequency_weekday_enum` INT(5), ADD `is_compounding_to_be_posted_as_transaction` TINYINT(1) NOT NULL DEFAULT '0', ADD `allow_compounding_on_eod` TINYINT(1) NOT NULL DEFAULT '0'; +ALTER TABLE `m_product_loan_recalculation_details` ADD `rest_frequency_nth_day_enum` INT, ADD `rest_frequency_on_day` INT, ADD `rest_frequency_weekday_enum` INT, +ADD `compounding_frequency_nth_day_enum` INT, ADD `compounding_frequency_on_day` INT, ADD `compounding_frequency_weekday_enum` INT, ADD `is_compounding_to_be_posted_as_transaction` tinyint NOT NULL DEFAULT '0', ADD `allow_compounding_on_eod` tinyint NOT NULL DEFAULT '0'; -ALTER TABLE `m_loan_recalculation_details` ADD `rest_frequency_nth_day_enum` INT(5), ADD `rest_frequency_on_day` INT(5), ADD `rest_frequency_weekday_enum` INT(5), -ADD `compounding_frequency_nth_day_enum` INT(5), ADD `compounding_frequency_on_day` INT(5), -ADD `is_compounding_to_be_posted_as_transaction` TINYINT(1) NOT NULL DEFAULT '0', -ADD `compounding_frequency_weekday_enum` INT(5), ADD `allow_compounding_on_eod` TINYINT(1) NOT NULL DEFAULT '0'; +ALTER TABLE `m_loan_recalculation_details` ADD `rest_frequency_nth_day_enum` INT, ADD `rest_frequency_on_day` INT, ADD `rest_frequency_weekday_enum` INT, +ADD `compounding_frequency_nth_day_enum` INT, ADD `compounding_frequency_on_day` INT, +ADD `is_compounding_to_be_posted_as_transaction` tinyint NOT NULL DEFAULT '0', +ADD `compounding_frequency_weekday_enum` INT, ADD `allow_compounding_on_eod` tinyint NOT NULL DEFAULT '0'; UPDATE m_product_loan_recalculation_details plr SET plr.compounding_frequency_weekday_enum = (WEEKDAY(plr.compounding_freqency_date) + 1) WHERE plr.compounding_frequency_type_enum = 3 AND plr.compounding_freqency_date IS NOT NULL; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V307__add_share_notes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V307__add_share_notes.sql index 3cf5a1206..9f1096f24 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V307__add_share_notes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V307__add_share_notes.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_note` -ADD COLUMN `share_account_id` BIGINT(20) NULL DEFAULT NULL AFTER `savings_account_transaction_id`; \ No newline at end of file +ADD COLUMN `share_account_id` BIGINT NULL DEFAULT NULL AFTER `savings_account_transaction_id`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V309__add_loan_write_off_reason_code.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V309__add_loan_write_off_reason_code.sql index 95cb92c1c..cec814e29 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V309__add_loan_write_off_reason_code.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V309__add_loan_write_off_reason_code.sql @@ -20,5 +20,5 @@ INSERT INTO `m_code` (`code_name`, `is_system_defined`) VALUES ('WriteOffReasons', 1); ALTER TABLE `m_loan` -add column `writeoff_reason_cv_id` INT(11) NULL DEFAULT NULL, +add column `writeoff_reason_cv_id` INT NULL DEFAULT NULL, add CONSTRAINT `FK_writeoffreason_m_loan_m_code_value` FOREIGN KEY (`writeoff_reason_cv_id`) REFERENCES `m_code_value` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V311__foreclosure_details.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V311__foreclosure_details.sql index ddf27c510..ae5c20c00 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V311__foreclosure_details.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V311__foreclosure_details.sql @@ -23,4 +23,4 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c ALTER TABLE `m_loan` - ADD COLUMN `loan_sub_status_id` SMALLINT(5) NULL DEFAULT NULL; \ No newline at end of file + ADD COLUMN `loan_sub_status_id` SMALLINT NULL DEFAULT NULL; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V312__add_is_mandatory_to_code_value.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V312__add_is_mandatory_to_code_value.sql index ec1ff5aa4..3935005f2 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V312__add_is_mandatory_to_code_value.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V312__add_is_mandatory_to_code_value.sql @@ -17,4 +17,4 @@ -- under the License. -- -alter table `m_code_value` add `is_mandatory` tinyint(1) not null default '0'; +alter table `m_code_value` add `is_mandatory` tinyint not null default '0'; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V313__multi_rescheduling_script.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V313__multi_rescheduling_script.sql index a779193c8..6f1710d55 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V313__multi_rescheduling_script.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V313__multi_rescheduling_script.sql @@ -18,13 +18,13 @@ -- ALTER TABLE `m_loan_term_variations` - ADD COLUMN `is_active` TINYINT(1) NOT NULL DEFAULT '1' AFTER `applied_on_loan_status`; + ADD COLUMN `is_active` tinyint NOT NULL DEFAULT '1' AFTER `applied_on_loan_status`; ALTER TABLE `m_loan_term_variations` - ADD COLUMN `parent_id` BIGINT(20) NULL DEFAULT NULL AFTER `is_active`; + ADD COLUMN `parent_id` BIGINT NULL DEFAULT NULL AFTER `is_active`; ALTER TABLE `m_loan_term_variations` - ADD COLUMN `reshedule_request_id` BIGINT(20) NULL DEFAULT NULL AFTER `parent_id`; + ADD COLUMN `reshedule_request_id` BIGINT NULL DEFAULT NULL AFTER `parent_id`; insert into m_loan_term_variations(`loan_id`, `term_type`, `applicable_date`, `decimal_value`, `date_value` , `is_specific_to_installment`, `applied_on_loan_status`, `reshedule_request_id` , `is_active` , `parent_id`) ( @@ -136,16 +136,16 @@ ALTER TABLE `m_loan_reschedule_request` DROP COLUMN `adjusted_due_date`; CREATE TABLE `m_loan_reschedule_request_term_variations_mapping` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_reschedule_request_id` BIGINT(20) NOT NULL, - `loan_term_variations_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_reschedule_request_id` BIGINT NOT NULL, + `loan_term_variations_id` BIGINT NOT NULL, PRIMARY KEY (`id`), INDEX `FK__m_loan_reschedule_request` (`loan_reschedule_request_id`), INDEX `FK__m_loan_term_variations` (`loan_term_variations_id`), CONSTRAINT `FK__m_loan_reschedule_request` FOREIGN KEY (`loan_reschedule_request_id`) REFERENCES `m_loan_reschedule_request` (`id`), CONSTRAINT `FK__m_loan_term_variations` FOREIGN KEY (`loan_term_variations_id`) REFERENCES `m_loan_term_variations` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1 ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V316__address_module_tables_metadat.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V316__address_module_tables_metadat.sql index 63ca60778..7b06bc849 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V316__address_module_tables_metadat.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V316__address_module_tables_metadat.sql @@ -30,7 +30,7 @@ INSERT INTO `c_configuration` (`name`, `value`, `date_value`, `enabled`, `is_tra -- add address table CREATE TABLE `m_address` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `street` VARCHAR(100) NULL DEFAULT NULL, `address_line_1` VARCHAR(100) NULL DEFAULT NULL, `address_line_2` VARCHAR(100) NULL DEFAULT NULL, @@ -38,11 +38,11 @@ CREATE TABLE `m_address` ( `town_village` VARCHAR(100) NULL DEFAULT NULL, `city` VARCHAR(100) NULL DEFAULT NULL, `county_district` VARCHAR(100) NULL DEFAULT NULL, - `state_province_id` INT(11) NULL DEFAULT NULL, - `country_id` INT(11) NULL DEFAULT NULL, + `state_province_id` INT NULL DEFAULT NULL, + `country_id` INT NULL DEFAULT NULL, `postal_code` VARCHAR(10) NULL DEFAULT NULL, - `latitude` DECIMAL(10,8) UNSIGNED NULL DEFAULT '0.00000000', - `longitude` DECIMAL(10,8) UNSIGNED NULL DEFAULT '0.00000000', + `latitude` DECIMAL(10,8) NULL DEFAULT '0.00000000', + `longitude` DECIMAL(10,8) NULL DEFAULT '0.00000000', `created_by` VARCHAR(100) NULL DEFAULT NULL, `created_on` DATE NULL DEFAULT NULL, `updated_by` VARCHAR(100) NULL DEFAULT NULL, @@ -60,11 +60,11 @@ AUTO_INCREMENT=1 -- entity address table CREATE TABLE `m_client_address` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NOT NULL DEFAULT '0', - `address_id` BIGINT(20) NOT NULL DEFAULT '0', - `address_type_id` INT(11) NOT NULL DEFAULT '0', - `is_active` TINYINT(4) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL DEFAULT '0', + `address_id` BIGINT NOT NULL DEFAULT '0', + `address_type_id` INT NOT NULL DEFAULT '0', + `is_active` TINYINT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), INDEX `addressIdFk` (`address_id`), INDEX `address_codefk` (`address_type_id`), @@ -79,12 +79,12 @@ AUTO_INCREMENT=1 -- field configuration CREATE TABLE `m_field_configuration` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `entity` VARCHAR(100) NOT NULL, `subentity` VARCHAR(100) NOT NULL, `field` VARCHAR(100) NOT NULL, - `is_enabled` TINYINT(4) NOT NULL, - `is_mandatory` TINYINT(4) NOT NULL, + `is_enabled` TINYINT NOT NULL, + `is_mandatory` TINYINT NOT NULL, `validation_regex` VARCHAR(50) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V317__report_mailing_job_module.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V317__report_mailing_job_module.sql index a80df0cf9..bcdf08f2e 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V317__report_mailing_job_module.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V317__report_mailing_job_module.sql @@ -31,16 +31,16 @@ email_recipients text not null, email_subject varchar(100) not null, email_message text not null, email_attachment_file_format varchar(10) not null, -stretchy_report_id int not null, +stretchy_report_id INT not null, stretchy_report_param_map text null, previous_run_datetime datetime null, next_run_datetime datetime null, previous_run_status varchar(10) null, previous_run_error_log text null, previous_run_error_message text null, -number_of_runs int not null default 0, -is_active tinyint(1) not null default 0, -is_deleted tinyint(1) not null default 0, +number_of_runs INT not null default 0, +is_active tinyint not null default 0, +is_deleted tinyint not null default 0, run_as_userid bigint not null, foreign key (createdby_id) references m_appuser(id), foreign key (lastmodifiedby_id) references m_appuser(id), @@ -61,7 +61,7 @@ foreign key (job_id) references m_report_mailing_job (id) ); create table if not exists m_report_mailing_job_configuration ( -id int primary key auto_increment, +id INT primary key auto_increment, name varchar(50) not null, `value` varchar(200) not null, constraint unique_name unique (name) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V318__topuploan.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V318__topuploan.sql index d89d7712d..579a0fafc 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V318__topuploan.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V318__topuploan.sql @@ -18,10 +18,10 @@ -- ALTER TABLE `m_product_loan` - ADD COLUMN `can_use_for_topup` TINYINT(1) NOT NULL DEFAULT 0 AFTER `instalment_amount_in_multiples_of`; + ADD COLUMN `can_use_for_topup` tinyint NOT NULL DEFAULT 0 AFTER `instalment_amount_in_multiples_of`; ALTER TABLE `m_loan` - ADD COLUMN `is_topup` TINYINT(1) NOT NULL DEFAULT 0 AFTER `loan_sub_status_id`; + ADD COLUMN `is_topup` tinyint NOT NULL DEFAULT 0 AFTER `loan_sub_status_id`; CREATE TABLE `m_loan_topup` ( `id` BIGINT NOT NULL AUTO_INCREMENT, @@ -34,7 +34,7 @@ CREATE TABLE `m_loan_topup` ( CONSTRAINT `m_loan_topup_FK_closure_loan_id` FOREIGN KEY (`closure_loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `m_loan_topup_FK_account_transfer_details_id` FOREIGN KEY (`account_transfer_details_id`) REFERENCES `m_account_transfer_details` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V322_1__scheduled_email_campaign.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V322_1__scheduled_email_campaign.sql index 8e353c776..c9328fec1 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V322_1__scheduled_email_campaign.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V322_1__scheduled_email_campaign.sql @@ -18,28 +18,28 @@ -- CREATE TABLE `scheduled_email_campaign` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `campaign_name` VARCHAR(100) NOT NULL, - `campaign_type` INT(11) NOT NULL, - `businessRule_id` INT(11) NOT NULL, + `campaign_type` INT NOT NULL, + `businessRule_id` INT NOT NULL, `param_value` TEXT NULL, - `status_enum` INT(11) NOT NULL, + `status_enum` INT NOT NULL, `email_subject` VARCHAR(100) NOT NULL, `email_message` TEXT NOT NULL, `email_attachment_file_format` VARCHAR(10) NOT NULL, - `stretchy_report_id` INT(11) NOT NULL, + `stretchy_report_id` INT NOT NULL, `stretchy_report_param_map` TEXT NULL DEFAULT NULL, `closedon_date` DATE NULL DEFAULT NULL, - `closedon_userid` BIGINT(20) NULL DEFAULT NULL, + `closedon_userid` BIGINT NULL DEFAULT NULL, `submittedon_date` DATE NULL DEFAULT NULL, - `submittedon_userid` BIGINT(20) NULL DEFAULT NULL, + `submittedon_userid` BIGINT NULL DEFAULT NULL, `approvedon_date` DATE NULL DEFAULT NULL, - `approvedon_userid` BIGINT(20) NULL DEFAULT NULL, + `approvedon_userid` BIGINT NULL DEFAULT NULL, `recurrence` VARCHAR(100) NULL DEFAULT NULL, `next_trigger_date` DATETIME NULL DEFAULT NULL, `last_trigger_date` DATETIME NULL DEFAULT NULL, `recurrence_start_date` DATETIME NULL DEFAULT NULL, - `is_visible` TINYINT(1) NULL DEFAULT '1', + `is_visible` tinyint NULL DEFAULT '1', `previous_run_error_log` TEXT NULL DEFAULT NULL, `previous_run_error_message` TEXT NULL DEFAULT NULL, PRIMARY KEY (`id`), @@ -47,12 +47,12 @@ CREATE TABLE `scheduled_email_campaign` ( ); CREATE TABLE IF NOT EXISTS scheduled_email_messages_outbound ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `email_campaign_id` bigint(20) DEFAULT NULL, - `status_enum` int(5) NOT NULL DEFAULT '100', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT DEFAULT NULL, + `email_campaign_id` BIGINT DEFAULT NULL, + `status_enum` INT NOT NULL DEFAULT '100', `email_address` varchar(50) NOT NULL, `email_subject` varchar(50) NOT NULL, `message` text NOT NULL, @@ -70,7 +70,7 @@ CREATE TABLE IF NOT EXISTS scheduled_email_messages_outbound ( ); create table if not exists scheduled_email_configuration ( -id int primary key auto_increment, +id INT primary key auto_increment, name varchar(50) not null, `value` varchar(200) null, constraint unique_name unique (name) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V322__sms_campaign.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V322__sms_campaign.sql index e3b5bb373..01dd09221 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V322__sms_campaign.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V322__sms_campaign.sql @@ -18,26 +18,26 @@ -- CREATE TABLE `sms_campaign` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `campaign_name` VARCHAR(100) NOT NULL, - `campaign_type` INT(11) NOT NULL, - `campaign_trigger_type` INT(11) NOT NULL, - `report_id` INT(11) NOT NULL, - `provider_id` BIGINT(20) NOT NULL, + `campaign_type` INT NOT NULL, + `campaign_trigger_type` INT NOT NULL, + `report_id` INT NOT NULL, + `provider_id` BIGINT NOT NULL, `param_value` TEXT NULL, - `status_enum` INT(11) NOT NULL, + `status_enum` INT NOT NULL, `message` TEXT NOT NULL, `submittedon_date` DATE NULL DEFAULT NULL, - `submittedon_userid` BIGINT(20) NULL DEFAULT NULL, + `submittedon_userid` BIGINT NULL DEFAULT NULL, `approvedon_date` DATE NULL DEFAULT NULL, - `approvedon_userid` BIGINT(20) NULL DEFAULT NULL, + `approvedon_userid` BIGINT NULL DEFAULT NULL, `closedon_date` DATE NULL DEFAULT NULL, - `closedon_userid` BIGINT(20) NULL DEFAULT NULL, + `closedon_userid` BIGINT NULL DEFAULT NULL, `recurrence` VARCHAR(100) NULL DEFAULT NULL, `next_trigger_date` DATETIME NULL DEFAULT NULL, `last_trigger_date` DATETIME NULL DEFAULT NULL, `recurrence_start_date` DATETIME NULL DEFAULT NULL, - `is_visible` TINYINT(1) NULL DEFAULT '1', + `is_visible` tinyint NULL DEFAULT '1', PRIMARY KEY (`id`), INDEX `report_id` (`report_id`), CONSTRAINT `sms_campaign_ibfk_1` FOREIGN KEY (`report_id`) REFERENCES `stretchy_report` (`id`) @@ -45,7 +45,7 @@ CREATE TABLE `sms_campaign` ( ALTER TABLE `sms_messages_outbound` - ADD COLUMN `campaign_id` BIGINT(20) NOT NULL, + ADD COLUMN `campaign_id` BIGINT NOT NULL, ADD COLUMN `external_id` VARCHAR(100) NULL DEFAULT NULL, ADD COLUMN `submittedon_date` DATE NULL DEFAULT NULL, ADD COLUMN `delivered_on_date` DATETIME NULL DEFAULT NULL, diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V323__spm_replace_dead_fk_with_exisiting_one.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V323__spm_replace_dead_fk_with_exisiting_one.sql index 405515f3e..ccd2b28b7 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V323__spm_replace_dead_fk_with_exisiting_one.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V323__spm_replace_dead_fk_with_exisiting_one.sql @@ -20,14 +20,14 @@ SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `m_survey_scorecards`; CREATE TABLE `m_survey_scorecards` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `survey_id` BIGINT(20) NOT NULL, - `question_id` BIGINT(20) NOT NULL, - `response_id` BIGINT(20) NOT NULL, - `user_id` BIGINT(20) NOT NULL, - `client_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, + `question_id` BIGINT NOT NULL, + `response_id` BIGINT NOT NULL, + `user_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, `created_on` DATETIME NULL DEFAULT NULL, - `a_value` INT(4) NOT NULL, + `a_value` INT NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`), FOREIGN KEY (`question_id`) REFERENCES `m_survey_questions` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V324__datatable_checks.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V324__datatable_checks.sql index e1acacee4..66712c55a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V324__datatable_checks.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V324__datatable_checks.sql @@ -18,22 +18,19 @@ -- CREATE TABLE `m_entity_datatable_check` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `application_table_name` VARCHAR(200) NOT NULL, `x_registered_table_name` VARCHAR(50) NOT NULL, - `status_enum` INT(11) NOT NULL, - `system_defined` TINYINT(4) NOT NULL DEFAULT '0', - `product_id` BIGINT(10) NULL DEFAULT NULL, + `status_enum` INT NOT NULL, + `system_defined` TINYINT NOT NULL DEFAULT '0', + `product_id` BIGINT NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `unique_entity_check` (`application_table_name`, `x_registered_table_name`, `status_enum`, `product_id`), INDEX `x_registered_table_name` (`x_registered_table_name`), INDEX `product_id` (`product_id`), CONSTRAINT `m_entity_datatable_check_ibfk_1` FOREIGN KEY (`x_registered_table_name`) REFERENCES `x_registered_table` (`registered_table_name`) -) -COLLATE='utf8_general_ci' -ENGINE=InnoDB -; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; INSERT INTO m_permission (`grouping`, code, entity_name, action_name, can_maker_checker) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V325__add_is_staff_client_data.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V325__add_is_staff_client_data.sql index 2d6b3597d..12de15d2f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V325__add_is_staff_client_data.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V325__add_is_staff_client_data.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_client` - ADD COLUMN `is_staff` TINYINT(1) NOT NULL DEFAULT '0' AFTER `mobile_no`; + ADD COLUMN `is_staff` tinyint NOT NULL DEFAULT '0' AFTER `mobile_no`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V327__creditbureau_configuration.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V327__creditbureau_configuration.sql index d1ebd03b6..b324b388c 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V327__creditbureau_configuration.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V327__creditbureau_configuration.sql @@ -19,67 +19,67 @@ -- credit bureau tables CREATE TABLE `m_creditbureau` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `product` varchar(100) NOT NULL, `country` varchar(100) NOT NULL, `implementationKey` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique impl` (`name`,`product`,`country`,`implementationKey`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_organisation_creditbureau` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `alias` varchar(50) NOT NULL, - `creditbureau_id` bigint(20) NOT NULL, - `is_active` tinyint(4) NOT NULL, + `creditbureau_id` BIGINT NOT NULL, + `is_active` TINYINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `morgcb` (`alias`,`creditbureau_id`), KEY `orgcb_cbfk` (`creditbureau_id`), CONSTRAINT `orgcb_cbfk` FOREIGN KEY (`creditbureau_id`) REFERENCES `m_creditbureau` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_creditbureau_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `configkey` varchar(50) DEFAULT NULL, `value` varchar(50) DEFAULT NULL, - `organisation_creditbureau_id` bigint(20) DEFAULT NULL, + `organisation_creditbureau_id` BIGINT DEFAULT NULL, `description` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mcbconfig` (`configkey`,`organisation_creditbureau_id`), KEY `cbConfigfk1` (`organisation_creditbureau_id`), CONSTRAINT `cbConfigfk1` FOREIGN KEY (`organisation_creditbureau_id`) REFERENCES `m_organisation_creditbureau` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; CREATE TABLE `m_creditbureau_loanproduct_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `organisation_creditbureau_id` bigint(20) NOT NULL, - `loan_product_id` bigint(20) NOT NULL, - `is_creditcheck_mandatory` tinyint(1) DEFAULT NULL, - `skip_creditcheck_in_failure` tinyint(1) DEFAULT NULL, - `stale_period` int(11) DEFAULT NULL, - `is_active` tinyint(1) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `organisation_creditbureau_id` BIGINT NOT NULL, + `loan_product_id` BIGINT NOT NULL, + `is_creditcheck_mandatory` tinyint DEFAULT NULL, + `skip_creditcheck_in_failure` tinyint DEFAULT NULL, + `stale_period` INT DEFAULT NULL, + `is_active` tinyint DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `cblpunique_key` (`organisation_creditbureau_id`,`loan_product_id`), KEY `fk_cb_lp2` (`loan_product_id`), CONSTRAINT `cblpfk2` FOREIGN KEY (`organisation_creditbureau_id`) REFERENCES `m_organisation_creditbureau` (`id`), CONSTRAINT `fk_cb_lp2` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- modify `m_portfolio_command_source` command ALTER TABLE `m_portfolio_command_source` - ADD COLUMN `creditbureau_id` BIGINT(20) NULL DEFAULT NULL AFTER `transaction_id`, - ADD COLUMN `organisation_creditbureau_id` BIGINT(20) NULL DEFAULT NULL AFTER `creditbureau_id`; + ADD COLUMN `creditbureau_id` BIGINT NULL DEFAULT NULL AFTER `transaction_id`, + ADD COLUMN `organisation_creditbureau_id` BIGINT NULL DEFAULT NULL AFTER `creditbureau_id`; -- permissions diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V328__family_members_sql_support.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V328__family_members_sql_support.sql index 458a100d8..e624a9620 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V328__family_members_sql_support.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V328__family_members_sql_support.sql @@ -19,20 +19,20 @@ CREATE TABLE `m_family_members` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, `firstname` varchar(50) NOT NULL, `middlename` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `qualification` varchar(50) DEFAULT NULL, - `relationship_cv_id` int(11) NOT NULL, - `marital_status_cv_id` int(11) DEFAULT NULL, - `gender_cv_id` int(11) DEFAULT NULL, + `relationship_cv_id` INT NOT NULL, + `marital_status_cv_id` INT DEFAULT NULL, + `gender_cv_id` INT DEFAULT NULL, `date_of_birth` date DEFAULT NULL, - `age` int(11) DEFAULT NULL, - `profession_cv_id` int(11) DEFAULT NULL, + `age` INT DEFAULT NULL, + `profession_cv_id` INT DEFAULT NULL, `mobile_number` varchar(50) DEFAULT NULL, - `is_dependent` tinyint(4) DEFAULT NULL, + `is_dependent` TINYINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_family_members_client_id_m_client` (`client_id`), KEY `FK_m_family_members_relationship_m_code_value` (`relationship_cv_id`), @@ -44,7 +44,7 @@ CREATE TABLE `m_family_members` ( CONSTRAINT `FK_m_family_members_marital_status_m_code_value` FOREIGN KEY (`marital_status_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_family_members_profession_m_code_value` FOREIGN KEY (`profession_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_family_members_relationship_m_code_value` FOREIGN KEY (`relationship_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8MB4; -- permissions diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V329__sms_messages_without_campaign.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V329__sms_messages_without_campaign.sql index cb94fc321..0d0b36e1f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V329__sms_messages_without_campaign.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V329__sms_messages_without_campaign.sql @@ -17,4 +17,4 @@ -- under the License. -- -ALTER TABLE `sms_messages_outbound` CHANGE `campaign_id` `campaign_id` BIGINT(20) NULL DEFAULT NULL; \ No newline at end of file +ALTER TABLE `sms_messages_outbound` CHANGE `campaign_id` `campaign_id` BIGINT NULL DEFAULT NULL; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V330__savings_account_transaction_releaseId.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V330__savings_account_transaction_releaseId.sql index c20ea9fdb..bebe92b43 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V330__savings_account_transaction_releaseId.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V330__savings_account_transaction_releaseId.sql @@ -38,7 +38,7 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c -- modify `m_savings_account_transaction` -ALTER TABLE `m_savings_account_transaction` ADD COLUMN `release_id_of_hold_amount` BIGINT(20) NULL DEFAULT NULL; +ALTER TABLE `m_savings_account_transaction` ADD COLUMN `release_id_of_hold_amount` BIGINT NULL DEFAULT NULL; -- modify `m_savings_account` diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V331__holiday_schema_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V331__holiday_schema_changes.sql index 94ae19aa1..4e8a56068 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V331__holiday_schema_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V331__holiday_schema_changes.sql @@ -20,4 +20,4 @@ ALTER TABLE m_holiday MODIFY COLUMN repayments_rescheduled_to DATETIME NULL DEFAULT NULL, -ADD COLUMN `rescheduling_type` INT(5) NOT NULL DEFAULT '2'; \ No newline at end of file +ADD COLUMN `rescheduling_type` INT NOT NULL DEFAULT '2'; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V332__self_service_registration_schema.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V332__self_service_registration_schema.sql index 0f93700ac..bff8ea80a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V332__self_service_registration_schema.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V332__self_service_registration_schema.sql @@ -18,7 +18,7 @@ -- CREATE TABLE `request_audit_table` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `lastname` VARCHAR(100) NOT NULL, `username` VARCHAR(100) NOT NULL, `mobile_number` VARCHAR(50) NULL DEFAULT NULL, @@ -26,13 +26,13 @@ CREATE TABLE `request_audit_table` ( `authentication_token` VARCHAR(100) NULL DEFAULT NULL, `password` VARCHAR(250) NOT NULL, `email` VARCHAR(100) NOT NULL, - `client_id` BIGINT(20) NOT NULL, + `client_id` BIGINT NOT NULL, `created_date` DATE NOT NULL, `account_number` VARCHAR(100) NOT NULL, PRIMARY KEY (`id`), INDEX `FK1_request_audit_table_m_client` (`client_id`), CONSTRAINT `FK1_request_audit_table_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V333__adhocquery.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V333__adhocquery.sql index 1da45cf42..b600345cc 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V333__adhocquery.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V333__adhocquery.sql @@ -18,16 +18,16 @@ -- CREATE TABLE `m_adhoc` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NULL DEFAULT NULL, `query` VARCHAR(2000) NULL DEFAULT NULL, `table_name` VARCHAR(100) NULL DEFAULT NULL, `table_fields` VARCHAR(1000) NULL DEFAULT NULL, `email` VARCHAR(500) NOT NULL, - `IsActive` TINYINT(1) NOT NULL DEFAULT '0', + `IsActive` tinyint NOT NULL DEFAULT '0', `created_date` DATETIME NULL DEFAULT NULL, `createdby_id` BIGINT NOT NULL, - `lastmodifiedby_id` BIGINT(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` DATETIME NULL DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `createdby_id` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V334__notification_module_tables.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V334__notification_module_tables.sql index 8d6812664..37e9eb49b 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V334__notification_module_tables.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V334__notification_module_tables.sql @@ -18,12 +18,12 @@ -- CREATE TABLE IF NOT EXISTS `notification_generator` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `object_type` text, - `object_identifier` bigint(20) DEFAULT NULL, + `object_identifier` BIGINT DEFAULT NULL, `action` text, - `actor` bigint(20), - `is_system_generated` tinyint(1) DEFAULT '0', + `actor` BIGINT, + `is_system_generated` tinyint DEFAULT '0', `notification_content` text, `created_at` datetime DEFAULT NULL, PRIMARY KEY (`id`) @@ -31,10 +31,10 @@ CREATE TABLE IF NOT EXISTS `notification_generator` ( CREATE TABLE IF NOT EXISTS `notification_mapper` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `notification_id` bigint(20) DEFAULT NULL, - `user_id` bigint(20) DEFAULT NULL, - `is_read` tinyint(1) DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `notification_id` BIGINT DEFAULT NULL, + `user_id` BIGINT DEFAULT NULL, + `is_read` tinyint DEFAULT '0', `created_at` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `notification_mapper` (`user_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V336__sms_campaign_notification.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V336__sms_campaign_notification.sql index 37ab49629..39b6b007c 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V336__sms_campaign_notification.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V336__sms_campaign_notification.sql @@ -18,8 +18,8 @@ -- CREATE TABLE `client_device_registration` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, `updatedon_date` DATETIME NOT NULL, `registration_id` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`), @@ -39,10 +39,10 @@ INSERT INTO `c_external_service_properties` (`name`, `value`, `external_service_ ); ALTER TABLE sms_campaign -MODIFY COLUMN provider_id BIGINT(20) NULL DEFAULT NULL, -ADD COLUMN is_notification TINYINT(1) NULL DEFAULT '0'; +MODIFY COLUMN provider_id BIGINT NULL DEFAULT NULL, +ADD COLUMN is_notification tinyint NULL DEFAULT '0'; ALTER TABLE sms_messages_outbound MODIFY COLUMN mobile_no VARCHAR(50) NULL DEFAULT NULL, -ADD COLUMN is_notification TINYINT(1) NOT NULL DEFAULT '0' +ADD COLUMN is_notification tinyint NOT NULL DEFAULT '0' diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V337__equal_amortization.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V337__equal_amortization.sql index a32ccf44e..060782b16 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V337__equal_amortization.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V337__equal_amortization.sql @@ -17,5 +17,5 @@ -- under the License. -- -ALTER TABLE `m_product_loan` ADD COLUMN `is_equal_amortization` TINYINT(1) NOT NULL DEFAULT '0'; -ALTER TABLE `m_loan` ADD COLUMN `is_equal_amortization` TINYINT(1) NOT NULL DEFAULT '0'; \ No newline at end of file +ALTER TABLE `m_product_loan` ADD COLUMN `is_equal_amortization` tinyint NOT NULL DEFAULT '0'; +ALTER TABLE `m_loan` ADD COLUMN `is_equal_amortization` tinyint NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V338__two_factor_authentication.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V338__two_factor_authentication.sql index bd5d35950..de2110fd9 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V338__two_factor_authentication.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V338__two_factor_authentication.sql @@ -20,9 +20,9 @@ -- Access Token Table CREATE TABLE `twofactor_access_token` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `token` varchar(32) NOT NULL, - `appuser_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, `valid_from` datetime NOT NULL, `valid_to` datetime NOT NULL, `enabled` bit(1) NOT NULL, @@ -36,7 +36,7 @@ CREATE TABLE `twofactor_access_token` ( -- Configuration CREATE TABLE `twofactor_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(40) NOT NULL, `value` varchar(1024) DEFAULT NULL, PRIMARY KEY (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V341__m_import_document.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V341__m_import_document.sql index 386016e72..69dbb6c4c 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V341__m_import_document.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V341__m_import_document.sql @@ -18,16 +18,16 @@ -- CREATE TABLE `m_import_document` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `document_id` int(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `document_id` INT NOT NULL, `import_time` datetime NOT NULL, `end_time` datetime DEFAULT NULL, - `entity_type` tinyint(3) NOT NULL, - `completed` tinyint(2) DEFAULT 0, - `total_records` bigint(20) DEFAULT 0, - `success_count` bigint(20) DEFAULT 0, - `failure_count` bigint(20) DEFAULT 0, - `createdby_id` bigint(20) DEFAULT NULL, + `entity_type` TINYINT NOT NULL, + `completed` TINYINT DEFAULT 0, + `total_records` BIGINT DEFAULT 0, + `success_count` BIGINT DEFAULT 0, + `failure_count` BIGINT DEFAULT 0, + `createdby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `import_document_id` (`document_id`), CONSTRAINT `FK_m_import_m_document` FOREIGN KEY (`document_id`) REFERENCES `m_document` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V342__topic_module_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V342__topic_module_table.sql index 92562ef05..4d8fbf74f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V342__topic_module_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V342__topic_module_table.sql @@ -18,10 +18,10 @@ -- CREATE TABLE IF NOT EXISTS `topic` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` VARCHAR(100) NOT NULL, - `enabled` TINYINT(1) NULL, - `entity_id` BIGINT(20) NOT NULL, + `enabled` tinyint NULL, + `entity_id` BIGINT NOT NULL, `entity_type` TEXT NOT NULL, `member_type` TEXT NOT NULL, PRIMARY KEY (`id`), @@ -29,9 +29,9 @@ CREATE TABLE IF NOT EXISTS `topic` ( )ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS `topic_subscriber` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `topic_id` BIGINT(20) NOT NULL, - `user_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `topic_id` BIGINT NOT NULL, + `user_id` BIGINT NOT NULL, `subscription_date` DATE NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `fk_topic_has_m_appuser_topic` FOREIGN KEY (`topic_id`) REFERENCES `topic` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V344__parallelizing_and_paging_recalculate_interest_for_loans_job.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V344__parallelizing_and_paging_recalculate_interest_for_loans_job.sql index 5525fe293..716117d8a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V344__parallelizing_and_paging_recalculate_interest_for_loans_job.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V344__parallelizing_and_paging_recalculate_interest_for_loans_job.sql @@ -18,10 +18,10 @@ -- CREATE TABLE IF NOT EXISTS `job_parameters` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `job_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `job_id` BIGINT NOT NULL, `parameter_name` VARCHAR(100) NOT NULL, - `parameter_value` INT(11) NOT NULL, + `parameter_value` INT NOT NULL, PRIMARY KEY (`id`), KEY `FK_job_id` (`job_id`), CONSTRAINT `FK_job_id` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V345__reports_for_self_service_user.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V345__reports_for_self_service_user.sql index 92c4283db..0c18d5395 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V345__reports_for_self_service_user.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V345__reports_for_self_service_user.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `stretchy_report` - ADD COLUMN `self_service_user_report` TINYINT(1) NOT NULL DEFAULT '0' AFTER `use_report`; + ADD COLUMN `self_service_user_report` tinyint NOT NULL DEFAULT '0' AFTER `use_report`; UPDATE `stretchy_parameter` SET `parameter_sql`='select sp.parameter_name, sp.parameter_variable, sp.parameter_label, sp.parameter_displayType, \r sp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r from stretchy_parameter sp\r left join stretchy_parameter spp on spp.id = sp.parent_id\r where sp.special is null\r and exists \r (select \'f\' \r from stretchy_report sr\r join stretchy_report_parameter srp on srp.report_id = sr.id and sr.self_service_user_report = \'${isSelfServiceUser}\'\r where sr.report_name in(${reportListing})\r and srp.parameter_id = sp.id\r )\r order by sp.id' WHERE `parameter_name` = 'FullParameterList'; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V348__m_trial_balance_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V348__m_trial_balance_table.sql index 960db1041..4e78c6356 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V348__m_trial_balance_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V348__m_trial_balance_table.sql @@ -18,8 +18,8 @@ -- CREATE TABLE `m_trial_balance` ( - `office_id` BIGINT(20) NOT NULL, - `account_id` BIGINT(20) NOT NULL, + `office_id` BIGINT NOT NULL, + `account_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, `entry_date` DATE NOT NULL, `created_date` DATE NULL, diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V349__client_transfer_details.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V349__client_transfer_details.sql index a725d9338..ad4711525 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V349__client_transfer_details.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V349__client_transfer_details.sql @@ -21,14 +21,14 @@ ALTER TABLE `m_client` ADD COLUMN `proposed_transfer_date` DATE NULL DEFAULT NULL AFTER `email_address`; CREATE TABLE `m_client_transfer_details` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NOT NULL, - `from_office_id` BIGINT(20) NOT NULL, - `to_office_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `from_office_id` BIGINT NOT NULL, + `to_office_id` BIGINT NOT NULL, `proposed_transfer_date` DATE NULL DEFAULT NULL, - `transfer_type` TINYINT(2) NOT NULL, + `transfer_type` TINYINT NOT NULL, `submitted_on` DATE NOT NULL, - `submitted_by` BIGINT(20) NOT NULL, + `submitted_by` BIGINT NOT NULL, PRIMARY KEY (`id`), INDEX `FK_m_client_transfer_details_m_client` (`client_id`), INDEX `FK_m_client_transfer_details_m_office` (`from_office_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V351__pocket_mapping.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V351__pocket_mapping.sql index b97164bfc..991b7e408 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V351__pocket_mapping.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V351__pocket_mapping.sql @@ -18,18 +18,18 @@ -- CREATE TABLE `m_pocket` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `app_user_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `app_user_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `app_user_id` (`app_user_id`), CONSTRAINT `FK__m_appuser__pocket` FOREIGN KEY (`app_user_id`) REFERENCES `m_appuser` (`id`) ); CREATE TABLE `m_pocket_accounts_mapping` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `pocket_id` BIGINT(20) NOT NULL, - `account_id` BIGINT(20) NOT NULL, - `account_type` INT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `pocket_id` BIGINT NOT NULL, + `account_id` BIGINT NOT NULL, + `account_type` INT NOT NULL, `account_number` VARCHAR(20) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `unique_pocket_mapping` (`pocket_id`, `account_id`, `account_type`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V352__interop_init.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V352__interop_init.sql index cec53dc6c..92da1d670 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V352__interop_init.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V352__interop_init.sql @@ -19,8 +19,8 @@ DROP TABLE IF EXISTS `interop_identifier`; CREATE TABLE `interop_identifier` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `account_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, `type` VARCHAR(32) NOT NULL, `a_value` VARCHAR(128) NOT NULL, `sub_value_or_type` VARCHAR(128) NULL, @@ -34,7 +34,7 @@ CREATE TABLE `interop_identifier` ( INDEX `fk_interop_identifier_account` (`account_id`), CONSTRAINT `fk_interop_identifier_account` FOREIGN KEY (`account_id`) REFERENCES `m_savings_account` (`id`) ) - COLLATE = 'utf8_general_ci' + COLLATE = 'utf8mb4_general_ci' ENGINE = InnoDB; -- user+roles @@ -76,7 +76,7 @@ VALUES ('interop', 'DELETE_INTERID', 'INTERID', 'DELETE', 0); INSERT IGNORE INTO m_code (code_name, is_system_defined) VALUES ('PaymentType', 1); SET @code_id = -1; -SELECT id INTO @code_id FROM m_code WHERE code_name = 'PaymentType'; +SELECT id FROM m_code WHERE code_name = 'PaymentType' INTO @code_id; INSERT IGNORE INTO m_code_value (code_id, code_value, order_position) VALUES (@code_id, 'Money Transfer', 1); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V355__rates.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V355__rates.sql index 8f35ce8d5..820737467 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V355__rates.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V355__rates.sql @@ -18,16 +18,16 @@ -- CREATE TABLE IF NOT EXISTS `m_rate` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(250) NOT NULL, `percentage` decimal(10,2) NOT NULL, - `active` tinyint(1) DEFAULT '0', - `product_apply` smallint(5) NOT NULL, + `active` tinyint DEFAULT '0', + `product_apply` SMALLINT NOT NULL, `created_date` datetime NULL DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NULL DEFAULT NULL, - `approve_user` bigint(20) DEFAULT NULL, + `approve_user` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_M_RATE_CREATE_USER` (`createdby_id`), KEY `FK_M_RATE_APPROVE_USER` (`approve_user`), @@ -37,8 +37,8 @@ CREATE TABLE IF NOT EXISTS `m_rate` ( CREATE TABLE IF NOT EXISTS `m_loan_rate` ( - `loan_id` bigint(20) NOT NULL, - `rate_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, + `rate_id` BIGINT NOT NULL, PRIMARY KEY (`loan_id`,`rate_id`), KEY `FK_M_LOAN_RATE_RATE` (`rate_id`), CONSTRAINT `FK_M_LOAN_RATE_LOAN` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), @@ -47,8 +47,8 @@ CREATE TABLE IF NOT EXISTS `m_loan_rate` ( CREATE TABLE IF NOT EXISTS `m_product_loan_rate` ( - `product_loan_id` bigint(20) NOT NULL, - `rate_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `rate_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`rate_id`), KEY `FK_M_PRODUCT_LOAN_RATE_RATE` (`rate_id`), CONSTRAINT `FK_M_PRODUCT_LOAN_RATE_LOAN` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V356__GSIM_migration_script.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V356__GSIM_migration_script.sql index 4dcbd8c39..ec89e06d6 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V356__GSIM_migration_script.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V356__GSIM_migration_script.sql @@ -40,13 +40,13 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c -- new gsim table CREATE TABLE `gsim_accounts` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `group_id` BIGINT(20) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `group_id` BIGINT NOT NULL DEFAULT '0', `account_number` VARCHAR(50) NOT NULL, `parent_deposit` DECIMAL(19,6) NOT NULL DEFAULT '0.000000', - `child_accounts_count` INT(11) NOT NULL, - `accepting_child` TINYINT(4) NOT NULL DEFAULT '0', - `savings_status_id` SMALLINT(5) NOT NULL DEFAULT '0', + `child_accounts_count` INT NOT NULL, + `accepting_child` TINYINT NOT NULL DEFAULT '0', + `savings_status_id` SMALLINT NOT NULL DEFAULT '0', `application_id` DECIMAL(10,0) NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE INDEX `gsim_account_no_UNIQUE` (`account_number`), @@ -55,9 +55,9 @@ CREATE TABLE `gsim_accounts` ( ); -- changes to savings - ALTER TABLE `m_savings_account` ADD COLUMN `gsim_id` bigint(20) DEFAULT NULL AFTER `group_id`; + ALTER TABLE `m_savings_account` ADD COLUMN `gsim_id` BIGINT DEFAULT NULL AFTER `group_id`; ALTER TABLE `m_savings_account` ADD CONSTRAINT `FK_gsim_id` FOREIGN KEY (`gsim_id`) REFERENCES `gsim_accounts` (`id`); -- changes to savings_Transaction - ALTER TABLE `m_savings_account_transaction` ADD COLUMN `is_loan_disbursement` bigint(20); \ No newline at end of file + ALTER TABLE `m_savings_account_transaction` ADD COLUMN `is_loan_disbursement` BIGINT; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V357__GLIM_migration_script.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V357__GLIM_migration_script.sql index aa1ffaa06..bb4a0bea5 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V357__GLIM_migration_script.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V357__GLIM_migration_script.sql @@ -31,13 +31,13 @@ -- new table glim_accounts added CREATE TABLE `glim_accounts` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `group_id` BIGINT(20) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `group_id` BIGINT NOT NULL DEFAULT '0', `account_number` VARCHAR(50) NOT NULL, `principal_amount` DECIMAL(19,6) NOT NULL DEFAULT '0.000000', - `child_accounts_count` INT(11) NOT NULL, - `accepting_child` TINYINT(4) NOT NULL DEFAULT '0', - `loan_status_id` SMALLINT(5) NOT NULL DEFAULT '0', + `child_accounts_count` INT NOT NULL, + `accepting_child` TINYINT NOT NULL DEFAULT '0', + `loan_status_id` SMALLINT NOT NULL DEFAULT '0', `application_id` DECIMAL(10,0) NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE INDEX `glim_account_no_UNIQUE` (`account_number`), @@ -47,7 +47,7 @@ -- change m_loan table - alter table `m_loan` add COLUMN `glim_id` bigint(20) DEFAULT NULL AFTER `group_id`; + alter table `m_loan` add COLUMN `glim_id` BIGINT DEFAULT NULL AFTER `group_id`; alter table `m_loan` add CONSTRAINT `FK_glim_id` FOREIGN KEY (`glim_id`) REFERENCES `glim_accounts` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V36__add_tag_id_column_for_acc_gl_account.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V36__add_tag_id_column_for_acc_gl_account.sql index 47518b69d..2f8a3264a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V36__add_tag_id_column_for_acc_gl_account.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V36__add_tag_id_column_for_acc_gl_account.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `acc_gl_account` -ADD COLUMN `tag_id` INT(11) NULL DEFAULT NULL AFTER `classification_enum`, +ADD COLUMN `tag_id` INT NULL DEFAULT NULL AFTER `classification_enum`, ADD INDEX `FKGLACC000000002` (`tag_id`), ADD CONSTRAINT `FKGLACC000000002` FOREIGN KEY (`tag_id`) REFERENCES `m_code_value` (`id`); INSERT into m_code(`code_name`,`is_system_defined`) values ('AssetAccountTags',1),('LiabilityAccountTags',1),('EquityAccountTags',1),('IncomeAccountTags',1),('ExpenseAccountTags',1); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V39__payment-channels-updates.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V39__payment-channels-updates.sql index 66b94d92d..4c249e628 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V39__payment-channels-updates.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V39__payment-channels-updates.sql @@ -25,12 +25,12 @@ update m_loan_transaction set payment_detail_id=null; ALTER TABLE `m_payment_detail` ALTER `payment_type_enum` DROP DEFAULT; ALTER TABLE `m_payment_detail` - CHANGE COLUMN `payment_type_enum` `payment_type_cv_id` INT(11) NULL AFTER `id`; + CHANGE COLUMN `payment_type_enum` `payment_type_cv_id` INT NULL AFTER `id`; delete from m_payment_detail; ALTER TABLE `m_payment_detail` ADD CONSTRAINT `FK_m_payment_detail_m_code_value` FOREIGN KEY (`payment_type_cv_id`) REFERENCES `m_code_value` (`id`); /*Map Different Payment Channels to payment Types*/ ALTER TABLE `acc_product_mapping` - ADD COLUMN `payment_type` INT(11) NULL DEFAULT NULL AFTER `product_type`, + ADD COLUMN `payment_type` INT NULL DEFAULT NULL AFTER `product_type`, ADD CONSTRAINT `FK_acc_product_mapping_m_code_value` FOREIGN KEY (`payment_type`) REFERENCES `m_code_value` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V42__Add_default_value_for_id_for_acc_accounting_rule.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V42__Add_default_value_for_id_for_acc_accounting_rule.sql index 619ff2186..120bb8f4d 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V42__Add_default_value_for_id_for_acc_accounting_rule.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V42__Add_default_value_for_id_for_acc_accounting_rule.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `acc_accounting_rule` - CHANGE COLUMN `id` `id` BIGINT(20) NOT NULL AUTO_INCREMENT FIRST; \ No newline at end of file + CHANGE COLUMN `id` `id` BIGINT NOT NULL AUTO_INCREMENT FIRST; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V43__accounting-for-savings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V43__accounting-for-savings.sql index 7c884f463..4a794a010 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V43__accounting-for-savings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V43__accounting-for-savings.sql @@ -19,12 +19,12 @@ /*add accounting type field to savings product*/ ALTER TABLE `m_savings_product` - ADD COLUMN `accounting_type` SMALLINT(5) NOT NULL AFTER `lockin_period_frequency_enum`; + ADD COLUMN `accounting_type` SMALLINT NOT NULL AFTER `lockin_period_frequency_enum`; /*update existing savings products to have "No" accounting*/ update m_savings_product set accounting_type=1; /*track payment details for savings transactions*/ ALTER TABLE `m_savings_account_transaction` -ADD COLUMN `payment_detail_id` BIGINT(20) NULL DEFAULT NULL AFTER `savings_account_id`, +ADD COLUMN `payment_detail_id` BIGINT NULL DEFAULT NULL AFTER `savings_account_id`, ADD CONSTRAINT `FK_m_savings_account_transaction_m_payment_detail` FOREIGN KEY (`payment_detail_id`) REFERENCES `m_payment_detail` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V45__create_acc_rule_tags_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V45__create_acc_rule_tags_table.sql index d10b09ad2..e9f5145a4 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V45__create_acc_rule_tags_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V45__create_acc_rule_tags_table.sql @@ -18,10 +18,10 @@ -- create table `acc_rule_tags` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `acc_rule_id` BIGINT(20) NOT NULL, - `tag_id` INT(11) NOT NULL, - `acc_type_enum` SMALLINT(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `acc_rule_id` BIGINT NOT NULL, + `tag_id` INT NOT NULL, + `acc_type_enum` SMALLINT NOT NULL, primary key(`id`), INDEX `FK_acc_accounting_rule_id` (`acc_rule_id`), INDEX `FK_m_code_value_id` (`tag_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V47__staff-hierarchy-link-to-users.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V47__staff-hierarchy-link-to-users.sql index d83a733bd..2b4188ee5 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V47__staff-hierarchy-link-to-users.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V47__staff-hierarchy-link-to-users.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `m_appuser` -ADD COLUMN `staff_id` BIGINT(20) NULL DEFAULT NULL AFTER `office_id` ; +ADD COLUMN `staff_id` BIGINT NULL DEFAULT NULL AFTER `office_id` ; ALTER TABLE m_appuser ADD CONSTRAINT `fk_m_appuser_002` @@ -30,4 +30,4 @@ ON UPDATE NO ACTION ALTER TABLE `m_staff` ADD COLUMN `organisational_role_enum` SMALLINT NULL DEFAULT NULL AFTER `external_id`, -ADD COLUMN `organisational_role_parent_staff_id` BIGINT(20) NULL DEFAULT NULL AFTER `organisational_role_enum`; +ADD COLUMN `organisational_role_parent_staff_id` BIGINT NULL DEFAULT NULL AFTER `organisational_role_enum`; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V48__adding-S3-Support.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V48__adding-S3-Support.sql index aed77f53d..ee542c9be 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V48__adding-S3-Support.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V48__adding-S3-Support.sql @@ -25,7 +25,7 @@ CREATE TABLE `c_external_service` ( `value` VARCHAR(250) NULL DEFAULT NULL, UNIQUE INDEX `name` (`name`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; INSERT INTO c_external_service (name) VALUES ('s3_bucket_name'); @@ -36,17 +36,17 @@ INSERT INTO c_external_service (name) VALUES ('s3_secret_key'); /*Image tables stores details of all images*/ CREATE TABLE IF NOT EXISTS `m_image`( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `location` varchar(500), - `storage_type_enum` SMALLINT(5), + `storage_type_enum` SMALLINT, PRIMARY KEY (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; /*Client points to image table*/ ALTER TABLE `m_client` - ADD COLUMN `image_id` BIGINT(20) NULL DEFAULT NULL AFTER `display_name`, + ADD COLUMN `image_id` BIGINT NULL DEFAULT NULL AFTER `display_name`, ADD CONSTRAINT `FK_m_client_m_image` FOREIGN KEY (`image_id`) REFERENCES `m_image` (`id`); /*Move existing image locations to new table*/ @@ -68,7 +68,7 @@ while v_counter < num_of_clients do DEALLOCATE PREPARE stmt1; select ifnull(max(`id`),0) from m_image INTO curr_image; - SET @z = CONCAT('select id INTO @curr_client FROM m_client where image_key is not null limit ', v_counter , ', ', 1); + SET @z = CONCAT('select id FROM m_client where image_key is not null limit INTO @curr_client ', v_counter , ', ', 1); PREPARE stmt2 FROM @z; EXECUTE stmt2; @@ -93,5 +93,5 @@ ALTER TABLE `m_client` DROP COLUMN `image_key`; /*Add storage type for m_document table and update existing documents to file storage*/ -ALTER TABLE m_document ADD COLUMN storage_type_enum SMALLINT(5); +ALTER TABLE m_document ADD COLUMN storage_type_enum SMALLINT; UPDATE m_document set storage_type_enum=1; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V49__track-loan-charge-payment-transactions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V49__track-loan-charge-payment-transactions.sql index c4899ebbd..20310960c 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V49__track-loan-charge-payment-transactions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V49__track-loan-charge-payment-transactions.sql @@ -18,9 +18,9 @@ -- CREATE TABLE `m_loan_charge_paid_by` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `loan_transaction_id` BIGINT(20) NOT NULL, - `loan_charge_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_transaction_id` BIGINT NOT NULL, + `loan_charge_id` BIGINT NOT NULL, `amount` DECIMAL(19,6) NOT NULL, PRIMARY KEY (`id`), INDEX `FK__m_loan_transaction` (`loan_transaction_id`), @@ -28,5 +28,5 @@ CREATE TABLE `m_loan_charge_paid_by` ( CONSTRAINT `FK__m_loan_charge` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK__m_loan_transaction` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V4__mifosx-core-reports-utf8.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V4__mifosx-core-reports-utf8.sql index 9a238cccf..5920335c5 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V4__mifosx-core-reports-utf8.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V4__mifosx-core-reports-utf8.sql @@ -21,8 +21,8 @@ truncate table stretchy_report; truncate table stretchy_parameter; truncate table stretchy_report_parameter; -INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); -INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'${currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); +INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\", \r\nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\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.\r\n\r\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),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\", \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\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\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.total_repayment_derived as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as \"Client Account No.\",\r\n mc.display_name AS \"Client Name\",\r\n ml.account_no AS \"Account Number\",\r\n ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS \"Days in Arrears Band\"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\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),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\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\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else \"invalid PAR Type\"\r\n end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund, \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = \"$\{currencyId}\" or \"-1\" = \"$\{currencyId}\")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1); +INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'$\{currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position) x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(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,\r\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \n\n\r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on rp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where \n\nur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(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, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n (select \'f\' \r\n from stretchy_report sr\r\n join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n where sr.report_name in(${reportListing})\r\n and srp.parameter_id = sp.parameter_id\r\n )\r\norder by sp.parameter_id',NULL),(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,\r\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n from stretchy_report r\r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n where r.report_category = \'${reportCategory}\'\r\n and \n\nr.use_report is true\r\n and exists\r\n (\r\n select \'f\'\r\n from m_appuser_role ur \r\n join m_role r on r.id = ur.role_id\r\n join m_role_permission rp on \n\nrp.role_id = r.id\r\n join m_permission p on p.id = rp.permission_id\r\n where ur.appuser_id = ${currentUserId}\r\n and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n order by r.report_category, r.report_name, rp.parameter_id',NULL); INSERT INTO `stretchy_report_parameter` VALUES (1,5,NULL),(2,5,NULL),(2,6,NULL),(2,10,NULL),(2,20,NULL),(2,25,NULL),(2,26,NULL),(5,5,NULL),(5,6,NULL),(5,10,NULL),(5,20,NULL),(5,25,NULL),(5,26,NULL),(6,5,NULL),(6,6,NULL),(6,10,NULL),(6,20,NULL),(6,25,NULL),(6,26,NULL),(7,5,NULL),(7,6,NULL),(7,10,NULL),(7,20,NULL),(7,25,NULL),(7,26,NULL),(8,5,NULL),(8,6,NULL),(8,10,NULL),(8,25,NULL),(8,26,NULL),(11,5,NULL),(11,6,NULL),(11,10,NULL),(11,20,NULL),(11,25,NULL),(11,26,NULL),(11,100,NULL),(12,5,NULL),(12,6,NULL),(12,10,NULL),(12,20,NULL),(12,25,NULL),(12,26,NULL),(13,1,NULL),(13,2,NULL),(13,3,NULL),(13,5,NULL),(13,6,NULL),(13,10,NULL),(13,20,NULL),(13,25,NULL),(13,26,NULL),(14,1,NULL),(14,2,NULL),(14,3,NULL),(14,5,NULL),(14,6,NULL),(14,10,NULL),(14,20,NULL),(14,25,NULL),(14,26,NULL),(15,5,NULL),(15,6,NULL),(15,10,NULL),(15,20,NULL),(15,25,NULL),(15,26,NULL),(15,100,NULL),(16,5,NULL),(16,6,NULL),(16,10,NULL),(16,20,NULL),(16,25,NULL),(16,26,NULL),(16,100,NULL),(20,1,NULL),(20,2,NULL),(20,10,NULL),(20,20,NULL),(21,1,NULL),(21,2,NULL),(21,5,NULL),(21,10,NULL),(21,20,NULL),(48,5,'branch'),(48,2,'date'),(49,5,'branch'),(49,1,'fromDate'),(49,2,'toDate'),(50,5,'branch'),(50,1,'fromDate'),(50,2,'toDate'),(51,1,NULL),(51,2,NULL),(51,5,NULL),(51,10,NULL),(51,25,NULL),(52,5,NULL),(53,5,NULL),(53,10,NULL),(54,1,NULL),(54,2,NULL),(54,5,NULL),(54,10,NULL),(54,25,NULL),(55,5,NULL),(55,6,NULL),(55,10,NULL),(55,20,NULL),(55,25,NULL),(55,26,NULL),(56,5,NULL),(56,6,NULL),(56,10,NULL),(56,20,NULL),(56,25,NULL),(56,26,NULL),(56,100,NULL),(57,5,NULL),(57,6,NULL),(57,10,NULL),(57,20,NULL),(57,25,NULL),(57,26,NULL),(58,5,NULL),(58,6,NULL),(58,10,NULL),(58,20,NULL),(58,25,NULL),(58,26,NULL),(58,100,NULL),(59,1,NULL),(59,2,NULL),(59,5,NULL),(59,6,NULL),(59,10,NULL),(59,20,NULL),(59,25,NULL),(59,26,NULL),(61,5,NULL),(61,10,NULL),(92,1,'fromDate'),(92,5,'selectOffice'),(92,2,'toDate'),(93,1,NULL),(93,2,NULL),(93,5,NULL),(93,6,NULL),(94,2,'endDate'),(94,6,'loanOfficerId'),(94,5,'officeId'),(94,1,'startDate'); insert into m_permission(`grouping`, `code`, entity_name, action_name, can_maker_checker) diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V50__add-grace-settings-to-loan-product.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V50__add-grace-settings-to-loan-product.sql index e0a670b3b..6ce495abd 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V50__add-grace-settings-to-loan-product.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V50__add-grace-settings-to-loan-product.sql @@ -18,11 +18,11 @@ -- ALTER TABLE `m_product_loan` -ADD COLUMN `grace_on_principal_periods` SMALLINT(5) NULL DEFAULT NULL AFTER `max_number_of_repayments`, -ADD COLUMN `grace_on_interest_periods` SMALLINT(5) NULL DEFAULT NULL AFTER `grace_on_principal_periods`, -ADD COLUMN `grace_interest_free_periods` SMALLINT(5) NULL DEFAULT NULL AFTER `grace_on_interest_periods`; +ADD COLUMN `grace_on_principal_periods` SMALLINT NULL DEFAULT NULL AFTER `max_number_of_repayments`, +ADD COLUMN `grace_on_interest_periods` SMALLINT NULL DEFAULT NULL AFTER `grace_on_principal_periods`, +ADD COLUMN `grace_interest_free_periods` SMALLINT NULL DEFAULT NULL AFTER `grace_on_interest_periods`; ALTER TABLE `m_loan` -ADD COLUMN `grace_on_principal_periods` SMALLINT(5) NULL DEFAULT NULL AFTER `number_of_repayments`, -ADD COLUMN `grace_on_interest_periods` SMALLINT(5) NULL DEFAULT NULL AFTER `grace_on_principal_periods`, -ADD COLUMN `grace_interest_free_periods` SMALLINT(5) NULL DEFAULT NULL AFTER `grace_on_interest_periods`; \ No newline at end of file +ADD COLUMN `grace_on_principal_periods` SMALLINT NULL DEFAULT NULL AFTER `number_of_repayments`, +ADD COLUMN `grace_on_interest_periods` SMALLINT NULL DEFAULT NULL AFTER `grace_on_principal_periods`, +ADD COLUMN `grace_interest_free_periods` SMALLINT NULL DEFAULT NULL AFTER `grace_on_interest_periods`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V52__add_boolean_support_cols_to_acc_accounting_rule.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V52__add_boolean_support_cols_to_acc_accounting_rule.sql index 16bc0c686..2cab65811 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V52__add_boolean_support_cols_to_acc_accounting_rule.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V52__add_boolean_support_cols_to_acc_accounting_rule.sql @@ -18,8 +18,8 @@ -- ALTER TABLE `acc_accounting_rule` - ADD COLUMN `allow_multiple_debits` TINYINT(1) NOT NULL DEFAULT '0' AFTER `debit_account_id`, - ADD COLUMN `allow_multiple_credits` TINYINT(1) NOT NULL DEFAULT '0' AFTER `credit_account_id`; + ADD COLUMN `allow_multiple_debits` tinyint NOT NULL DEFAULT '0' AFTER `debit_account_id`, + ADD COLUMN `allow_multiple_credits` tinyint NOT NULL DEFAULT '0' AFTER `credit_account_id`; ALTER TABLE acc_rule_tags ADD UNIQUE KEY `UNIQUE_ACCOUNT_RULE_TAGS` (`acc_rule_id`,`tag_id`,`acc_type_enum`); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V54__charge-to-income-account-mappings.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V54__charge-to-income-account-mappings.sql index 75e972702..72011b16a 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V54__charge-to-income-account-mappings.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V54__charge-to-income-account-mappings.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `acc_product_mapping` - ADD COLUMN `charge_id` BIGINT(20) NULL DEFAULT NULL AFTER `payment_type`, + ADD COLUMN `charge_id` BIGINT NULL DEFAULT NULL AFTER `payment_type`, ADD CONSTRAINT `FK_acc_product_mapping_m_charge` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.sql index c64939c28..0db25b052 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `acc_accounting_rule` - CHANGE COLUMN `debit_account_id` `debit_account_id` BIGINT(20) NULL DEFAULT NULL AFTER `office_id`, - CHANGE COLUMN `credit_account_id` `credit_account_id` BIGINT(20) NULL DEFAULT NULL AFTER `allow_multiple_debits`; \ No newline at end of file + CHANGE COLUMN `debit_account_id` `debit_account_id` BIGINT NULL DEFAULT NULL AFTER `office_id`, + CHANGE COLUMN `credit_account_id` `credit_account_id` BIGINT NULL DEFAULT NULL AFTER `allow_multiple_debits`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V58__create-holiday-tables_changed.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V58__create-holiday-tables_changed.sql index 72d9aa669..1709ee297 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V58__create-holiday-tables_changed.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V58__create-holiday-tables_changed.sql @@ -19,7 +19,7 @@ create table `m_holiday`( -`id` BIGINT(20) NOT NULL AUTO_INCREMENT, +`id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `from_date` DATETIME NOT NULL, `to_date` DATETIME NOT NULL, @@ -29,8 +29,8 @@ UNIQUE INDEX `holiday_name` (`name`) ); CREATE TABLE `m_holiday_office` ( - `holiday_id` BIGINT(20) NOT NULL, - `office_id` BIGINT(20) NOT NULL, + `holiday_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, PRIMARY KEY (`holiday_id`, `office_id`), INDEX `m_holiday_id_ibfk_1` (`holiday_id`), INDEX `m_office_id_ibfk_2` (`office_id`), diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V59__add_group_roles_schema_and_permissions.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V59__add_group_roles_schema_and_permissions.sql index 41ceda158..1457fdc1f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V59__add_group_roles_schema_and_permissions.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V59__add_group_roles_schema_and_permissions.sql @@ -24,10 +24,10 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('portfolio', 'UPDATEROLE_GROUP', 'GROUP', 'UPDATEROLE', 0); CREATE TABLE `m_group_roles` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NULL DEFAULT NULL, - `group_id` BIGINT(20) NULL DEFAULT NULL, - `role_cv_id` INT(11) NULL DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NULL DEFAULT NULL, + `group_id` BIGINT NULL DEFAULT NULL, + `role_cv_id` INT NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `FKGroupRoleClientId` (`client_id`), INDEX `FKGroupRoleGroupId` (`group_id`), @@ -37,5 +37,5 @@ CREATE TABLE `m_group_roles` ( CONSTRAINT `FKGroupRoleGroupId` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_grouprole_m_codevalue` FOREIGN KEY (`role_cv_id`) REFERENCES `m_code_value` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V5__update-savings-product-and-account-tables.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V5__update-savings-product-and-account-tables.sql index 3f6d8b471..91b490710 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V5__update-savings-product-and-account-tables.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V5__update-savings-product-and-account-tables.sql @@ -20,11 +20,11 @@ ALTER TABLE `m_savings_product` DROP COLUMN `nominal_interest_rate_period_frequency_enum`, CHANGE COLUMN `nominal_interest_rate_per_period` `nominal_annual_interest_rate` DECIMAL(19,6) NOT NULL, -CHANGE COLUMN `interest_period_enum` `interest_compounding_period_enum` SMALLINT(5) NOT NULL; +CHANGE COLUMN `interest_period_enum` `interest_compounding_period_enum` SMALLINT NOT NULL; ALTER TABLE `m_savings_account` DROP COLUMN `annual_nominal_interest_rate`, DROP COLUMN `nominal_interest_rate_period_frequency_enum`, CHANGE COLUMN `nominal_interest_rate_per_period` `nominal_annual_interest_rate` DECIMAL(19,6) NOT NULL, -CHANGE COLUMN `interest_period_enum` `interest_compounding_period_enum` SMALLINT(5) NOT NULL; \ No newline at end of file +CHANGE COLUMN `interest_period_enum` `interest_compounding_period_enum` SMALLINT NOT NULL; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V62__add_staff_id_to_m_client_changed.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V62__add_staff_id_to_m_client_changed.sql index 00d19de8c..e9a3453b9 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V62__add_staff_id_to_m_client_changed.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V62__add_staff_id_to_m_client_changed.sql @@ -19,6 +19,6 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('portfolio', 'UNASSIGNSTAFF_CLIENT', 'CLIENT', 'UNASSIGNSTAFF', 0); ALTER TABLE m_client - ADD COLUMN `staff_id` BIGINT(20) NULL DEFAULT NULL AFTER `office_id`, + ADD COLUMN `staff_id` BIGINT NULL DEFAULT NULL AFTER `office_id`, ADD INDEX `client_staff_id` (`staff_id`), ADD CONSTRAINT `FK_m_client_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`); \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V63__add_sync_disbursement_with_meeting_column_to_loan.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V63__add_sync_disbursement_with_meeting_column_to_loan.sql index 30908e6d1..1d878009a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V63__add_sync_disbursement_with_meeting_column_to_loan.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V63__add_sync_disbursement_with_meeting_column_to_loan.sql @@ -20,4 +20,4 @@ ALTER TABLE `m_loan` - ADD COLUMN `sync_disbursement_with_meeting` TINYINT(1) NULL AFTER `loan_transaction_strategy_id`; \ No newline at end of file + ADD COLUMN `sync_disbursement_with_meeting` tinyint NULL AFTER `loan_transaction_strategy_id`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V66__client_close_functionality.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V66__client_close_functionality.sql index d66c3def4..fe7bcd1cb 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V66__client_close_functionality.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V66__client_close_functionality.sql @@ -19,7 +19,7 @@ INSERT INTO `m_code` (`code_name`, `is_system_defined`) VALUES ('ClientClosureReason', 1); -ALTER TABLE `m_client` ADD COLUMN `closure_reason_cv_id` INT(11) NULL DEFAULT NULL, +ALTER TABLE `m_client` ADD COLUMN `closure_reason_cv_id` INT NULL DEFAULT NULL, ADD COLUMN `closedon_date` DATE NULL DEFAULT NULL, ADD CONSTRAINT `FK_m_client_m_code` FOREIGN KEY (`closure_reason_cv_id`) REFERENCES `m_code_value` (`id`); diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V67__loans_in_advance_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V67__loans_in_advance_table.sql index 47261e1aa..7bccdc82f 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V67__loans_in_advance_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V67__loans_in_advance_table.sql @@ -20,7 +20,7 @@ /* table contains details of loans that have had overpayments aka payments in advance */ CREATE TABLE `m_loan_paid_in_advance` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `principal_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -28,4 +28,4 @@ CREATE TABLE `m_loan_paid_in_advance` ( `total_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_paid_in_advance_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V72__add_m_loan_counter_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V72__add_m_loan_counter_changes.sql index 234d85f2b..bbd5dd499 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V72__add_m_loan_counter_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V72__add_m_loan_counter_changes.sql @@ -18,14 +18,14 @@ -- ALTER TABLE m_product_loan - ADD COLUMN `include_in_borrower_cycle` TINYINT(1) NOT NULL DEFAULT '0'; + ADD COLUMN `include_in_borrower_cycle` tinyint NOT NULL DEFAULT '0'; CREATE TABLE `m_client_loan_counter` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `client_id` BIGINT(20) NOT NULL, - `loan_product_id` BIGINT(20) NOT NULL, - `loan_id` BIGINT(20) NOT NULL, - `running_count` SMALLINT(4) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `loan_product_id` BIGINT NOT NULL, + `loan_id` BIGINT NOT NULL, + `running_count` SMALLINT NOT NULL, PRIMARY KEY (`id`), INDEX `FK_m_client_id_loan_counter` (`client_id`), INDEX `FK_m_loan_product_loan_counter` (`loan_product_id`), @@ -34,5 +34,5 @@ CREATE TABLE `m_client_loan_counter` ( CONSTRAINT `FK_m_loan_product_loan_counter` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`), CONSTRAINT `FK_m_client_loan_counter` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.sql index af5543716..1081913a0 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.sql @@ -19,4 +19,4 @@ ALTER TABLE `m_holiday` ADD COLUMN `repayments_rescheduled_to` DATETIME NOT NULL AFTER `to_date`, - ADD COLUMN `processed` TINYINT(1) NOT NULL DEFAULT '0' AFTER `repayments_rescheduled_to`; \ No newline at end of file + ADD COLUMN `processed` tinyint NOT NULL DEFAULT '0' AFTER `repayments_rescheduled_to`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V79__schedule_jobs_tables.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V79__schedule_jobs_tables.sql index 853ed90b3..f3803c264 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V79__schedule_jobs_tables.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V79__schedule_jobs_tables.sql @@ -18,27 +18,27 @@ -- CREATE TABLE `scheduled_jobs` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `job_name` VARCHAR(50) NOT NULL COLLATE 'latin1_swedish_ci', `job_display_name` VARCHAR(50) NOT NULL COLLATE 'latin1_swedish_ci', `cron_expression` VARCHAR(20) NOT NULL COLLATE 'latin1_swedish_ci', `create_time` DATETIME NOT NULL, - `task_priority` SMALLINT(6) NOT NULL DEFAULT '5', + `task_priority` SMALLINT NOT NULL DEFAULT '5', `group_name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `previous_run_start_time` DATETIME NULL DEFAULT NULL, `next_run_time` DATETIME NULL DEFAULT NULL, `trigger_key` VARCHAR(500) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `job_initializing_errorlog` TEXT NULL COLLATE 'latin1_swedish_ci', - `is_active` TINYINT(1) NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; CREATE TABLE `scheduled_job_runhistory` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `job_id` BIGINT(20) NOT NULL, - `version` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `job_id` BIGINT NOT NULL, + `version` BIGINT NOT NULL, `start_time` DATETIME NOT NULL, `end_time` DATETIME NOT NULL, `status` VARCHAR(10) NOT NULL COLLATE 'latin1_swedish_ci', @@ -49,7 +49,7 @@ CREATE TABLE `scheduled_job_runhistory` ( INDEX `scheduledjobsFK` (`job_id`), CONSTRAINT `scheduledjobsFK` FOREIGN KEY (`job_id`) REFERENCES `scheduled_jobs` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V81__savings_related_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V81__savings_related_changes.sql index 7cfed45f4..6d08f6a60 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V81__savings_related_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V81__savings_related_changes.sql @@ -18,35 +18,35 @@ -- ALTER TABLE `m_note` -ADD COLUMN `savings_account_id` BIGINT(20) NULL DEFAULT NULL AFTER `loan_transaction_id`, -ADD COLUMN `savings_account_transaction_id` BIGINT(20) NULL DEFAULT NULL AFTER `savings_account_id`; +ADD COLUMN `savings_account_id` BIGINT NULL DEFAULT NULL AFTER `loan_transaction_id`, +ADD COLUMN `savings_account_transaction_id` BIGINT NULL DEFAULT NULL AFTER `savings_account_id`; ALTER TABLE `m_note` ADD CONSTRAINT `FK_savings_account_id` FOREIGN KEY (`savings_account_id` ) REFERENCES `m_savings_account` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION, ADD INDEX `FK_savings_account_id` (`savings_account_id` ASC) ; ALTER TABLE `m_savings_account_transaction` -CHANGE COLUMN `is_reversed` `is_reversed` TINYINT(1) NOT NULL AFTER `transaction_type_enum`, +CHANGE COLUMN `is_reversed` `is_reversed` tinyint NOT NULL AFTER `transaction_type_enum`, CHANGE COLUMN `balance_end_date_derived` `balance_end_date_derived` DATE NULL DEFAULT NULL AFTER `amount`, -CHANGE COLUMN `balance_number_of_days_derived` `balance_number_of_days_derived` INT(11) NULL DEFAULT NULL AFTER `balance_end_date_derived`; +CHANGE COLUMN `balance_number_of_days_derived` `balance_number_of_days_derived` INT NULL DEFAULT NULL AFTER `balance_end_date_derived`; ALTER TABLE `m_savings_account` -ADD COLUMN `field_officer_id` bigint(20) DEFAULT NULL AFTER `product_id`, +ADD COLUMN `field_officer_id` BIGINT DEFAULT NULL AFTER `product_id`, ADD COLUMN `submittedon_date` DATE NOT NULL AFTER `status_enum`, -ADD COLUMN `submittedon_userid` bigint(20) DEFAULT NULL AFTER `submittedon_date`, +ADD COLUMN `submittedon_userid` BIGINT DEFAULT NULL AFTER `submittedon_date`, ADD COLUMN `approvedon_date` DATE DEFAULT NULL AFTER `submittedon_userid`, -ADD COLUMN `approvedon_userid` bigint(20) DEFAULT NULL AFTER `approvedon_date`, +ADD COLUMN `approvedon_userid` BIGINT DEFAULT NULL AFTER `approvedon_date`, ADD COLUMN `rejectedon_date` DATE DEFAULT NULL AFTER `approvedon_userid`, -ADD COLUMN `rejectedon_userid` bigint(20) DEFAULT NULL AFTER `rejectedon_date`, +ADD COLUMN `rejectedon_userid` BIGINT DEFAULT NULL AFTER `rejectedon_date`, ADD COLUMN `withdrawnon_date` DATE DEFAULT NULL AFTER `rejectedon_userid`, -ADD COLUMN `withdrawnon_userid` bigint(20) DEFAULT NULL AFTER `withdrawnon_date`; +ADD COLUMN `withdrawnon_userid` BIGINT DEFAULT NULL AFTER `withdrawnon_date`; ALTER TABLE `m_savings_account` CHANGE COLUMN `activation_date` `activatedon_date` DATE NULL DEFAULT NULL AFTER `withdrawnon_userid`; ALTER TABLE `m_savings_account` -ADD COLUMN `activatedon_userid` bigint(20) DEFAULT NULL AFTER `activatedon_date`, +ADD COLUMN `activatedon_userid` BIGINT DEFAULT NULL AFTER `activatedon_date`, ADD COLUMN `closedon_date` DATE DEFAULT NULL AFTER `activatedon_userid`, -ADD COLUMN `closedon_userid` bigint(20) DEFAULT NULL AFTER `closedon_date`; +ADD COLUMN `closedon_userid` BIGINT DEFAULT NULL AFTER `closedon_date`; UPDATE `m_savings_account` SET diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V82__schedule_jobs_tables_updates_for_running_status.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V82__schedule_jobs_tables_updates_for_running_status.sql index f3b0cd417..fcdc673e7 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V82__schedule_jobs_tables_updates_for_running_status.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V82__schedule_jobs_tables_updates_for_running_status.sql @@ -18,7 +18,7 @@ -- ALTER TABLE `job` - ADD COLUMN `currently_running` TINYINT(1) NOT NULL DEFAULT '0' AFTER `is_active`; + ADD COLUMN `currently_running` tinyint NOT NULL DEFAULT '0' AFTER `is_active`; ALTER TABLE `job` CHANGE COLUMN `trigger_key` `job_key` VARCHAR(500) NULL DEFAULT NULL; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V83__non-working-days-table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V83__non-working-days-table.sql index a33ec58e4..08ef25c46 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V83__non-working-days-table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V83__non-working-days-table.sql @@ -18,12 +18,12 @@ -- CREATE TABLE `m_working_days` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `recurrence` VARCHAR(100) NULL DEFAULT NULL, - `repayment_rescheduling_enum` SMALLINT(5) NULL DEFAULT NULL, + `repayment_rescheduling_enum` SMALLINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1; diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V85__product_mix_related_changes.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V85__product_mix_related_changes.sql index 6c4e7459b..f9f0343ce 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V85__product_mix_related_changes.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V85__product_mix_related_changes.sql @@ -25,14 +25,14 @@ INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `c INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES ('portfolio', 'DELETE_PRODUCTMIX', 'PRODUCTMIX', 'DELETE', 0); CREATE TABLE `m_product_mix` ( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, - `product_id` BIGINT(20) NOT NULL, - `restricted_product_id` BIGINT(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `restricted_product_id` BIGINT NOT NULL, PRIMARY KEY (`id`), INDEX `FK_m_product_mix_product_id_to_m_product_loan` (`product_id`), INDEX `FK_m_product_mix_restricted_product_id_to_m_product_loan` (`restricted_product_id`), CONSTRAINT `FK_m_product_mix_restricted_product_id_to_m_product_loan` FOREIGN KEY (`restricted_product_id`) REFERENCES `m_product_loan` (`id`), CONSTRAINT `FK_m_product_mix_product_id_to_m_product_loan` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V88__added_update_constrain_for_scheduler_jobs.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V88__added_update_constrain_for_scheduler_jobs.sql index dd2cd2c4a..43ec510d4 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V88__added_update_constrain_for_scheduler_jobs.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V88__added_update_constrain_for_scheduler_jobs.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `job` - ADD COLUMN `updates_allowed` TINYINT(1) NOT NULL DEFAULT '1' AFTER `currently_running`; \ No newline at end of file + ADD COLUMN `updates_allowed` tinyint NOT NULL DEFAULT '1' AFTER `currently_running`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V89__added_scheduler_group.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V89__added_scheduler_group.sql index bb318b3f6..6c382aec7 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V89__added_scheduler_group.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V89__added_scheduler_group.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `job` - ADD COLUMN `scheduler_group` SMALLINT(2) NOT NULL DEFAULT '0' AFTER `updates_allowed`; \ No newline at end of file + ADD COLUMN `scheduler_group` SMALLINT NOT NULL DEFAULT '0' AFTER `updates_allowed`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V94__added_savings_accont type.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V94__added_savings_accont type.sql index 1ad8b898a..abb34f483 100755 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V94__added_savings_accont type.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V94__added_savings_accont type.sql @@ -18,4 +18,4 @@ -- ALTER TABLE `m_savings_account` - ADD COLUMN `account_type_enum` SMALLINT(5) NOT NULL DEFAULT '1' AFTER `status_enum`; \ No newline at end of file + ADD COLUMN `account_type_enum` SMALLINT NOT NULL DEFAULT '1' AFTER `status_enum`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V96__savings_accounts_transfers_table.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V96__savings_accounts_transfers_table.sql index d4b3de349..7ab7c5253 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V96__savings_accounts_transfers_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V96__savings_accounts_transfers_table.sql @@ -28,23 +28,23 @@ VALUES DROP TABLE IF EXISTS `m_savings_account_transfer`; CREATE TABLE `m_savings_account_transfer` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) NOT NULL, - `to_office_id` bigint(20) NOT NULL, - `from_client_id` bigint(20) NOT NULL, - `to_client_id` bigint(20) NOT NULL, - `from_savings_account_id` bigint(20) DEFAULT NULL, - `to_savings_account_id` bigint(20) DEFAULT NULL, - `from_loan_account_id` bigint(20) DEFAULT NULL, - `to_loan_account_id` bigint(20) DEFAULT NULL, - `from_savings_transaction_id` bigint(20) DEFAULT NULL, - `from_loan_transaction_id` bigint(20) DEFAULT NULL, - `to_savings_transaction_id` bigint(20) DEFAULT NULL, - `to_loan_transaction_id` bigint(20) DEFAULT NULL, - `is_reversed` tinyint(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT NOT NULL, + `to_office_id` BIGINT NOT NULL, + `from_client_id` BIGINT NOT NULL, + `to_client_id` BIGINT NOT NULL, + `from_savings_account_id` BIGINT DEFAULT NULL, + `to_savings_account_id` BIGINT DEFAULT NULL, + `from_loan_account_id` BIGINT DEFAULT NULL, + `to_loan_account_id` BIGINT DEFAULT NULL, + `from_savings_transaction_id` BIGINT DEFAULT NULL, + `from_loan_transaction_id` BIGINT DEFAULT NULL, + `to_savings_transaction_id` BIGINT DEFAULT NULL, + `to_loan_transaction_id` BIGINT DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `transaction_date` date NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, + `currency_digits` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(200) NOT NULL, PRIMARY KEY (`id`), @@ -72,4 +72,4 @@ CREATE TABLE `m_savings_account_transfer` ( CONSTRAINT `FKTRAN000000010` FOREIGN KEY (`to_loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`), CONSTRAINT `FKTRAN000000011` FOREIGN KEY (`from_loan_account_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FKTRAN000000012` FOREIGN KEY (`from_loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V98__added_currency_roundof_for_multipleof.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V98__added_currency_roundof_for_multipleof.sql index fa5ae945b..46acee42a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V98__added_currency_roundof_for_multipleof.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V98__added_currency_roundof_for_multipleof.sql @@ -18,14 +18,14 @@ -- ALTER TABLE `m_savings_account` - ADD COLUMN `currency_multiplesof` SMALLINT(5) NULL AFTER `currency_digits`; + ADD COLUMN `currency_multiplesof` SMALLINT NULL AFTER `currency_digits`; ALTER TABLE `m_savings_product` - ADD COLUMN `currency_multiplesof` SMALLINT(5) NULL AFTER `currency_digits`; + ADD COLUMN `currency_multiplesof` SMALLINT NULL AFTER `currency_digits`; ALTER TABLE `m_loan` - ADD COLUMN `currency_multiplesof` SMALLINT(5) NULL AFTER `currency_digits`; + ADD COLUMN `currency_multiplesof` SMALLINT NULL AFTER `currency_digits`; ALTER TABLE `m_product_loan` - ADD COLUMN `currency_multiplesof` SMALLINT(5) NULL AFTER `currency_digits`; + ADD COLUMN `currency_multiplesof` SMALLINT NULL AFTER `currency_digits`; ALTER TABLE `m_currency` - ADD COLUMN `currency_multiplesof` SMALLINT(5) NULL AFTER `decimal_places`; + ADD COLUMN `currency_multiplesof` SMALLINT NULL AFTER `decimal_places`; ALTER TABLE `m_organisation_currency` - ADD COLUMN `currency_multiplesof` SMALLINT(5) NULL AFTER `decimal_places`; \ No newline at end of file + ADD COLUMN `currency_multiplesof` SMALLINT NULL AFTER `decimal_places`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V9__add_min_max_constraint_column_to_loan_loanproduct.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V9__add_min_max_constraint_column_to_loan_loanproduct.sql index d7cb32c0a..0426e6b66 100644 --- a/fineract-provider/src/main/resources/sql/migrations/core_db/V9__add_min_max_constraint_column_to_loan_loanproduct.sql +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V9__add_min_max_constraint_column_to_loan_loanproduct.sql @@ -20,14 +20,14 @@ ALTER TABLE `m_product_loan` ADD COLUMN `min_nominal_interest_rate_per_period` DECIMAL(19,6) NOT NULL AFTER `nominal_interest_rate_per_period`, ADD COLUMN `max_nominal_interest_rate_per_period` DECIMAL(19,6) NOT NULL AFTER `min_nominal_interest_rate_per_period`, - ADD COLUMN `min_number_of_repayments` SMALLINT(5) NOT NULL AFTER `number_of_repayments`, - ADD COLUMN `max_number_of_repayments` SMALLINT(5) NOT NULL AFTER `min_number_of_repayments`; + ADD COLUMN `min_number_of_repayments` SMALLINT NOT NULL AFTER `number_of_repayments`, + ADD COLUMN `max_number_of_repayments` SMALLINT NOT NULL AFTER `min_number_of_repayments`; ALTER TABLE `m_loan` ADD COLUMN `min_nominal_interest_rate_per_period` DECIMAL(19,6) NOT NULL AFTER `nominal_interest_rate_per_period`, ADD COLUMN `max_nominal_interest_rate_per_period` DECIMAL(19,6) NOT NULL AFTER `min_nominal_interest_rate_per_period`, - ADD COLUMN `min_number_of_repayments` SMALLINT(5) NOT NULL AFTER `number_of_repayments`, - ADD COLUMN `max_number_of_repayments` SMALLINT(5) NOT NULL AFTER `min_number_of_repayments`; + ADD COLUMN `min_number_of_repayments` SMALLINT NOT NULL AFTER `number_of_repayments`, + ADD COLUMN `max_number_of_repayments` SMALLINT NOT NULL AFTER `min_number_of_repayments`; ALTER TABLE `m_loan` ALTER `min_principal_amount` DROP DEFAULT, @@ -37,8 +37,8 @@ ALTER TABLE `m_loan` CHANGE COLUMN `max_principal_amount` `max_principal_amount` DECIMAL(19,6) NULL AFTER `min_principal_amount`, CHANGE COLUMN `min_nominal_interest_rate_per_period` `min_nominal_interest_rate_per_period` DECIMAL(19,6) NULL AFTER `nominal_interest_rate_per_period`, CHANGE COLUMN `max_nominal_interest_rate_per_period` `max_nominal_interest_rate_per_period` DECIMAL(19,6) NULL AFTER `min_nominal_interest_rate_per_period`, - CHANGE COLUMN `min_number_of_repayments` `min_number_of_repayments` SMALLINT(5) NULL AFTER `number_of_repayments`, - CHANGE COLUMN `max_number_of_repayments` `max_number_of_repayments` SMALLINT(5) NULL AFTER `min_number_of_repayments`; + CHANGE COLUMN `min_number_of_repayments` `min_number_of_repayments` SMALLINT NULL AFTER `number_of_repayments`, + CHANGE COLUMN `max_number_of_repayments` `max_number_of_repayments` SMALLINT NULL AFTER `min_number_of_repayments`; ALTER TABLE `m_product_loan` ALTER `min_principal_amount` DROP DEFAULT, @@ -52,5 +52,5 @@ ALTER TABLE `m_product_loan` CHANGE COLUMN `max_principal_amount` `max_principal_amount` DECIMAL(19,6) NULL AFTER `min_principal_amount`, CHANGE COLUMN `min_nominal_interest_rate_per_period` `min_nominal_interest_rate_per_period` DECIMAL(19,6) NULL AFTER `nominal_interest_rate_per_period`, CHANGE COLUMN `max_nominal_interest_rate_per_period` `max_nominal_interest_rate_per_period` DECIMAL(19,6) NULL AFTER `min_nominal_interest_rate_per_period`, - CHANGE COLUMN `min_number_of_repayments` `min_number_of_repayments` SMALLINT(5) NULL AFTER `number_of_repayments`, - CHANGE COLUMN `max_number_of_repayments` `max_number_of_repayments` SMALLINT(5) NULL AFTER `min_number_of_repayments`; \ No newline at end of file + CHANGE COLUMN `min_number_of_repayments` `min_number_of_repayments` SMALLINT NULL AFTER `number_of_repayments`, + CHANGE COLUMN `max_number_of_repayments` `max_number_of_repayments` SMALLINT NULL AFTER `min_number_of_repayments`; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/list_db/V1__mifos-platform-shared-tenants.sql b/fineract-provider/src/main/resources/sql/migrations/list_db/V1__mifos-platform-shared-tenants.sql index d12566094..d0ee51610 100644 --- a/fineract-provider/src/main/resources/sql/migrations/list_db/V1__mifos-platform-shared-tenants.sql +++ b/fineract-provider/src/main/resources/sql/migrations/list_db/V1__mifos-platform-shared-tenants.sql @@ -26,7 +26,7 @@ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -40,14 +40,14 @@ DROP TABLE IF EXISTS `tenants`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `tenants` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `identifier` varchar(100) NOT NULL, `name` varchar(100) NOT NULL, `schema_name` varchar(100) NOT NULL, `timezone_id` varchar(100) NOT NULL, - `country_id` int(11) DEFAULT NULL, + `country_id` INT DEFAULT NULL, `joined_date` date DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, @@ -55,9 +55,9 @@ CREATE TABLE `tenants` ( `schema_server_port` varchar(10) NOT NULL DEFAULT '3306', `schema_username` varchar(100) NOT NULL DEFAULT 'root', `schema_password` varchar(100) NOT NULL DEFAULT 'mysql', - `auto_update` tinyint(1) NOT NULL DEFAULT '1', + `auto_update` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -81,14 +81,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `timezones`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!40101 SET character_set_client = UTF8MB4 */; CREATE TABLE `timezones` ( - `id` int(3) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `country_code` varchar(2) NOT NULL, `timezonename` varchar(100) NOT NULL, `comments` varchar(150) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=UTF8MB4; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/fineract-provider/src/main/resources/sql/migrations/list_db/V2__externalize-connection-properties.sql b/fineract-provider/src/main/resources/sql/migrations/list_db/V2__externalize-connection-properties.sql index 983a84d79..937b94a02 100644 --- a/fineract-provider/src/main/resources/sql/migrations/list_db/V2__externalize-connection-properties.sql +++ b/fineract-provider/src/main/resources/sql/migrations/list_db/V2__externalize-connection-properties.sql @@ -18,16 +18,16 @@ -- ALTER TABLE `tenants` - ADD COLUMN `pool_initial_size` int(5) DEFAULT 5 AFTER `auto_update`, - ADD COLUMN `pool_validation_interval` int(11) DEFAULT 30000, - ADD COLUMN `pool_remove_abandoned` tinyint(1) DEFAULT 1, - ADD COLUMN `pool_remove_abandoned_timeout` int(5) DEFAULT 60, - ADD COLUMN `pool_log_abandoned` tinyint(1) DEFAULT 1, - ADD COLUMN `pool_abandon_when_percentage_full` int(5) DEFAULT 50, - ADD COLUMN `pool_test_on_borrow` tinyint(1) DEFAULT 1, - ADD COLUMN `pool_max_active` int(5) DEFAULT 40, - ADD COLUMN `pool_min_idle` int(5) DEFAULT 20, - ADD COLUMN `pool_max_idle` int(5) DEFAULT 10, - ADD COLUMN `pool_suspect_timeout` int(5) DEFAULT 60, - ADD COLUMN `pool_time_between_eviction_runs_millis` int(11) DEFAULT 34000, - ADD COLUMN `pool_min_evictable_idle_time_millis` int(11) DEFAULT 60000; \ No newline at end of file + ADD COLUMN `pool_initial_size` INT DEFAULT 5 AFTER `auto_update`, + ADD COLUMN `pool_validation_interval` INT DEFAULT 30000, + ADD COLUMN `pool_remove_abandoned` tinyint DEFAULT 1, + ADD COLUMN `pool_remove_abandoned_timeout` INT DEFAULT 60, + ADD COLUMN `pool_log_abandoned` tinyint DEFAULT 1, + ADD COLUMN `pool_abandon_when_percentage_full` INT DEFAULT 50, + ADD COLUMN `pool_test_on_borrow` tinyint DEFAULT 1, + ADD COLUMN `pool_max_active` INT DEFAULT 40, + ADD COLUMN `pool_min_idle` INT DEFAULT 20, + ADD COLUMN `pool_max_idle` INT DEFAULT 10, + ADD COLUMN `pool_suspect_timeout` INT DEFAULT 60, + ADD COLUMN `pool_time_between_eviction_runs_millis` INT DEFAULT 34000, + ADD COLUMN `pool_min_evictable_idle_time_millis` INT DEFAULT 60000; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/list_db/V3__deadlock-retry-properties.sql b/fineract-provider/src/main/resources/sql/migrations/list_db/V3__deadlock-retry-properties.sql index 20da22ffa..a221d3802 100644 --- a/fineract-provider/src/main/resources/sql/migrations/list_db/V3__deadlock-retry-properties.sql +++ b/fineract-provider/src/main/resources/sql/migrations/list_db/V3__deadlock-retry-properties.sql @@ -18,5 +18,5 @@ -- ALTER TABLE `tenants` - ADD COLUMN `deadlock_max_retries` int(5) DEFAULT 0, - ADD COLUMN `deadlock_max_retry_interval` int(5) DEFAULT 1; \ No newline at end of file + ADD COLUMN `deadlock_max_retries` INT DEFAULT 0, + ADD COLUMN `deadlock_max_retry_interval` INT DEFAULT 1; \ No newline at end of file diff --git a/fineract-provider/src/main/resources/sql/migrations/list_db/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table.sql b/fineract-provider/src/main/resources/sql/migrations/list_db/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table.sql index 535dfe0f7..dee13dc7a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/list_db/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table.sql +++ b/fineract-provider/src/main/resources/sql/migrations/list_db/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table.sql @@ -19,31 +19,31 @@ RENAME TABLE tenants to temp_tenants; -create table tenant_server_connections(`id` BIGINT(20) NOT NULL AUTO_INCREMENT, +create table tenant_server_connections(`id` BIGINT NOT NULL AUTO_INCREMENT, `schema_server` VARCHAR(100) NOT NULL DEFAULT 'localhost', `schema_name` VARCHAR(100) NOT NULL, `schema_server_port` VARCHAR(10) NOT NULL DEFAULT '3306', `schema_username` VARCHAR(100) NOT NULL DEFAULT 'root', `schema_password` VARCHAR(100) NOT NULL DEFAULT 'mysql', - `auto_update` TINYINT(1) NOT NULL DEFAULT '1', - `pool_initial_size` INT(5) NULL DEFAULT '5', - `pool_validation_interval` INT(11) NULL DEFAULT '30000', - `pool_remove_abandoned` TINYINT(1) NULL DEFAULT '1', - `pool_remove_abandoned_timeout` INT(5) NULL DEFAULT '60', - `pool_log_abandoned` TINYINT(1) NULL DEFAULT '1', - `pool_abandon_when_percentage_full` INT(5) NULL DEFAULT '50', - `pool_test_on_borrow` TINYINT(1) NULL DEFAULT '1', - `pool_max_active` INT(5) NULL DEFAULT '40', - `pool_min_idle` INT(5) NULL DEFAULT '20', - `pool_max_idle` INT(5) NULL DEFAULT '10', - `pool_suspect_timeout` INT(5) NULL DEFAULT '60', - `pool_time_between_eviction_runs_millis` INT(11) NULL DEFAULT '34000', - `pool_min_evictable_idle_time_millis` INT(11) NULL DEFAULT '60000', - `deadlock_max_retries` INT(5) NULL DEFAULT '0', - `deadlock_max_retry_interval` INT(5) NULL DEFAULT '1', + `auto_update` tinyint NOT NULL DEFAULT '1', + `pool_initial_size` INT NULL DEFAULT '5', + `pool_validation_interval` INT NULL DEFAULT '30000', + `pool_remove_abandoned` tinyint NULL DEFAULT '1', + `pool_remove_abandoned_timeout` INT NULL DEFAULT '60', + `pool_log_abandoned` tinyint NULL DEFAULT '1', + `pool_abandon_when_percentage_full` INT NULL DEFAULT '50', + `pool_test_on_borrow` tinyint NULL DEFAULT '1', + `pool_max_active` INT NULL DEFAULT '40', + `pool_min_idle` INT NULL DEFAULT '20', + `pool_max_idle` INT NULL DEFAULT '10', + `pool_suspect_timeout` INT NULL DEFAULT '60', + `pool_time_between_eviction_runs_millis` INT NULL DEFAULT '34000', + `pool_min_evictable_idle_time_millis` INT NULL DEFAULT '60000', + `deadlock_max_retries` INT NULL DEFAULT '0', + `deadlock_max_retry_interval` INT NULL DEFAULT '1', PRIMARY KEY (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1; @@ -53,23 +53,23 @@ SELECT `id`,`schema_name`,`schema_server`, `schema_server_port`, `schema_usernam CREATE TABLE tenants( - `id` BIGINT(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `identifier` VARCHAR(100) NOT NULL, `name` VARCHAR(100) NOT NULL, `timezone_id` VARCHAR(100) NOT NULL, - `country_id` INT(11) NULL DEFAULT NULL, + `country_id` INT NULL DEFAULT NULL, `joined_date` DATE NULL DEFAULT NULL, `created_date` DATETIME NULL DEFAULT NULL, `lastmodified_date` DATETIME NULL DEFAULT NULL, - `oltp_id` BIGINT(20) NOT NULL, - `report_id` BIGINT(20) NOT NULL, + `oltp_id` BIGINT NOT NULL, + `report_id` BIGINT NOT NULL, PRIMARY KEY (`id`), INDEX `fk_oltp_id` (`oltp_id`), INDEX `fk_report_id` (`report_id`), CONSTRAINT `fk_oltp_id` FOREIGN KEY (`oltp_id`) REFERENCES `tenant_server_connections` (`id`), CONSTRAINT `fk_report_id` FOREIGN KEY (`report_id`) REFERENCES `tenant_server_connections` (`id`) ) -COLLATE='utf8_general_ci' +COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1; diff --git a/fineract-provider/src/main/resources/sql/migrations/sample_data/barebones_db.sql b/fineract-provider/src/main/resources/sql/migrations/sample_data/barebones_db.sql index c41b4001f..741aee2fa 100644 --- a/fineract-provider/src/main/resources/sql/migrations/sample_data/barebones_db.sql +++ b/fineract-provider/src/main/resources/sql/migrations/sample_data/barebones_db.sql @@ -25,22 +25,22 @@ -- -------------------------------------------------------- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -- Dumping structure for table fineract_default.acc_accounting_rule DROP TABLE IF EXISTS `acc_accounting_rule`; CREATE TABLE IF NOT EXISTS `acc_accounting_rule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, - `office_id` bigint(20) DEFAULT NULL, - `debit_account_id` bigint(20) DEFAULT NULL, - `allow_multiple_debits` tinyint(1) NOT NULL DEFAULT '0', - `credit_account_id` bigint(20) DEFAULT NULL, - `allow_multiple_credits` tinyint(1) NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, + `debit_account_id` BIGINT DEFAULT NULL, + `allow_multiple_debits` tinyint NOT NULL DEFAULT '0', + `credit_account_id` BIGINT DEFAULT NULL, + `allow_multiple_credits` tinyint NOT NULL DEFAULT '0', `description` varchar(500) DEFAULT NULL, - `system_defined` tinyint(1) NOT NULL DEFAULT '0', + `system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `accounting_rule_name_unique` (`name`), KEY `FK_acc_accounting_rule_acc_gl_account_debit` (`debit_account_id`), @@ -49,7 +49,7 @@ CREATE TABLE IF NOT EXISTS `acc_accounting_rule` ( CONSTRAINT `FK_acc_accounting_rule_acc_gl_account_credit` FOREIGN KEY (`credit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_acc_accounting_rule_acc_gl_account_debit` FOREIGN KEY (`debit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_acc_accounting_rule_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.acc_accounting_rule: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_accounting_rule` DISABLE KEYS */; @@ -59,16 +59,16 @@ CREATE TABLE IF NOT EXISTS `acc_accounting_rule` ( -- Dumping structure for table fineract_default.acc_gl_account DROP TABLE IF EXISTS `acc_gl_account`; CREATE TABLE IF NOT EXISTS `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(50) DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, - `tag_id` int(11) DEFAULT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, + `tag_id` INT DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), @@ -76,7 +76,7 @@ CREATE TABLE IF NOT EXISTS `acc_gl_account` ( KEY `FKGLACC000000002` (`tag_id`), CONSTRAINT `FKGLACC000000002` FOREIGN KEY (`tag_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.acc_gl_account: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_gl_account` DISABLE KEYS */; @@ -86,12 +86,12 @@ CREATE TABLE IF NOT EXISTS `acc_gl_account` ( -- Dumping structure for table fineract_default.acc_gl_closure DROP TABLE IF EXISTS `acc_gl_closure`; CREATE TABLE IF NOT EXISTS `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -103,7 +103,7 @@ CREATE TABLE IF NOT EXISTS `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.acc_gl_closure: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_gl_closure` DISABLE KEYS */; @@ -113,14 +113,14 @@ CREATE TABLE IF NOT EXISTS `acc_gl_closure` ( -- Dumping structure for table fineract_default.acc_gl_financial_activity_account DROP TABLE IF EXISTS `acc_gl_financial_activity_account`; CREATE TABLE IF NOT EXISTS `acc_gl_financial_activity_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) NOT NULL DEFAULT '0', - `financial_activity_type` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT NOT NULL DEFAULT '0', + `financial_activity_type` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `financial_activity_type` (`financial_activity_type`), KEY `FK_office_mapping_acc_gl_account` (`gl_account_id`), CONSTRAINT `FK_office_mapping_acc_gl_account` FOREIGN KEY (`gl_account_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.acc_gl_financial_activity_account: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_gl_financial_activity_account` DISABLE KEYS */; @@ -130,33 +130,33 @@ CREATE TABLE IF NOT EXISTS `acc_gl_financial_activity_account` ( -- Dumping structure for table fineract_default.acc_gl_journal_entry DROP TABLE IF EXISTS `acc_gl_journal_entry`; CREATE TABLE IF NOT EXISTS `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, `transaction_id` varchar(50) NOT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `savings_transaction_id` bigint(20) DEFAULT NULL, - `client_transaction_id` bigint(20) DEFAULT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', + `loan_transaction_id` BIGINT DEFAULT NULL, + `savings_transaction_id` BIGINT DEFAULT NULL, + `client_transaction_id` BIGINT DEFAULT NULL, + `reversed` tinyint NOT NULL DEFAULT '0', `ref_num` varchar(100) DEFAULT NULL, - `manual_entry` tinyint(1) NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, - `is_running_balance_calculated` tinyint(4) NOT NULL DEFAULT '0', + `is_running_balance_calculated` TINYINT NOT NULL DEFAULT '0', `office_running_balance` decimal(19,6) NOT NULL DEFAULT '0.000000', `organization_running_balance` decimal(19,6) NOT NULL DEFAULT '0.000000', - `payment_details_id` bigint(20) DEFAULT NULL, - `share_transaction_id` bigint(20) DEFAULT NULL, + `payment_details_id` BIGINT DEFAULT NULL, + `share_transaction_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_acc_gl_journal_entry_m_office` (`office_id`), KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`), @@ -178,7 +178,7 @@ CREATE TABLE IF NOT EXISTS `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_payment_detail` FOREIGN KEY (`payment_details_id`) REFERENCES `m_payment_detail` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_savings_account_transaction` FOREIGN KEY (`savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_share_account_transaction` FOREIGN KEY (`share_transaction_id`) REFERENCES `m_share_account_transactions` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.acc_gl_journal_entry: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_gl_journal_entry` DISABLE KEYS */; @@ -188,19 +188,19 @@ CREATE TABLE IF NOT EXISTS `acc_gl_journal_entry` ( -- Dumping structure for table fineract_default.acc_product_mapping DROP TABLE IF EXISTS `acc_product_mapping`; CREATE TABLE IF NOT EXISTS `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `payment_type` int(11) DEFAULT NULL, - `charge_id` bigint(20) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `payment_type` INT DEFAULT NULL, + `charge_id` BIGINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_acc_product_mapping_m_charge` (`charge_id`), KEY `FK_acc_product_mapping_m_payment_type` (`payment_type`), CONSTRAINT `FK_acc_product_mapping_m_charge` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `FK_acc_product_mapping_m_payment_type` FOREIGN KEY (`payment_type`) REFERENCES `m_payment_type` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.acc_product_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_product_mapping` DISABLE KEYS */; @@ -210,17 +210,17 @@ CREATE TABLE IF NOT EXISTS `acc_product_mapping` ( -- Dumping structure for table fineract_default.acc_rule_tags DROP TABLE IF EXISTS `acc_rule_tags`; CREATE TABLE IF NOT EXISTS `acc_rule_tags` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `acc_rule_id` bigint(20) NOT NULL, - `tag_id` int(11) NOT NULL, - `acc_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `acc_rule_id` BIGINT NOT NULL, + `tag_id` INT NOT NULL, + `acc_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNIQUE_ACCOUNT_RULE_TAGS` (`acc_rule_id`,`tag_id`,`acc_type_enum`), KEY `FK_acc_accounting_rule_id` (`acc_rule_id`), KEY `FK_m_code_value_id` (`tag_id`), CONSTRAINT `FK_acc_accounting_rule_id` FOREIGN KEY (`acc_rule_id`) REFERENCES `acc_accounting_rule` (`id`), CONSTRAINT `FK_m_code_value_id` FOREIGN KEY (`tag_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.acc_rule_tags: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_rule_tags` DISABLE KEYS */; @@ -230,12 +230,12 @@ CREATE TABLE IF NOT EXISTS `acc_rule_tags` ( -- Dumping structure for table fineract_default.c_account_number_format DROP TABLE IF EXISTS `c_account_number_format`; CREATE TABLE IF NOT EXISTS `c_account_number_format` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_type_enum` smallint(1) NOT NULL, - `prefix_type_enum` smallint(2) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_type_enum` SMALLINT NOT NULL, + `prefix_type_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `account_type_enum` (`account_type_enum`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.c_account_number_format: ~0 rows (approximately) /*!40000 ALTER TABLE `c_account_number_format` DISABLE KEYS */; @@ -245,10 +245,10 @@ CREATE TABLE IF NOT EXISTS `c_account_number_format` ( -- Dumping structure for table fineract_default.c_cache DROP TABLE IF EXISTS `c_cache`; CREATE TABLE IF NOT EXISTS `c_cache` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cache_type_enum` tinyint(1) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `cache_type_enum` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.c_cache: ~0 rows (approximately) /*!40000 ALTER TABLE `c_cache` DISABLE KEYS */; @@ -260,16 +260,16 @@ INSERT INTO `c_cache` (`id`, `cache_type_enum`) VALUES -- Dumping structure for table fineract_default.c_configuration DROP TABLE IF EXISTS `c_configuration`; CREATE TABLE IF NOT EXISTS `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, - `value` int(11) DEFAULT NULL, + `value` INT DEFAULT NULL, `date_value` date DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', - `is_trap_door` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', + `is_trap_door` tinyint NOT NULL DEFAULT '0', `description` varchar(300) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.c_configuration: ~27 rows (approximately) /*!40000 ALTER TABLE `c_configuration` DISABLE KEYS */; @@ -307,11 +307,11 @@ INSERT INTO `c_configuration` (`id`, `name`, `value`, `date_value`, `enabled`, ` -- Dumping structure for table fineract_default.c_external_service DROP TABLE IF EXISTS `c_external_service`; CREATE TABLE IF NOT EXISTS `c_external_service` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.c_external_service: ~3 rows (approximately) /*!40000 ALTER TABLE `c_external_service` DISABLE KEYS */; @@ -327,10 +327,10 @@ DROP TABLE IF EXISTS `c_external_service_properties`; CREATE TABLE IF NOT EXISTS `c_external_service_properties` ( `name` varchar(150) NOT NULL, `value` varchar(250) DEFAULT NULL, - `external_service_id` bigint(20) NOT NULL, + `external_service_id` BIGINT NOT NULL, KEY `FK_c_external_service_properties_c_external_service` (`external_service_id`), CONSTRAINT `FK_c_external_service_properties_c_external_service` FOREIGN KEY (`external_service_id`) REFERENCES `c_external_service` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.c_external_service_properties: ~12 rows (approximately) /*!40000 ALTER TABLE `c_external_service_properties` DISABLE KEYS */; @@ -353,24 +353,24 @@ INSERT INTO `c_external_service_properties` (`name`, `value`, `external_service_ -- Dumping structure for table fineract_default.job DROP TABLE IF EXISTS `job`; CREATE TABLE IF NOT EXISTS `job` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `display_name` varchar(100) NOT NULL, `cron_expression` varchar(20) CHARACTER SET latin1 NOT NULL, `create_time` datetime NOT NULL, - `task_priority` smallint(6) NOT NULL DEFAULT '5', + `task_priority` SMALLINT NOT NULL DEFAULT '5', `group_name` varchar(50) CHARACTER SET latin1 DEFAULT NULL, `previous_run_start_time` datetime DEFAULT NULL, `next_run_time` datetime DEFAULT NULL, `job_key` varchar(500) DEFAULT NULL, `initializing_errorlog` text, - `is_active` tinyint(1) NOT NULL DEFAULT '1', - `currently_running` tinyint(1) NOT NULL DEFAULT '0', - `updates_allowed` tinyint(1) NOT NULL DEFAULT '1', - `scheduler_group` smallint(2) NOT NULL DEFAULT '0', - `is_misfired` tinyint(1) NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL DEFAULT '1', + `currently_running` tinyint NOT NULL DEFAULT '0', + `updates_allowed` tinyint NOT NULL DEFAULT '1', + `scheduler_group` SMALLINT NOT NULL DEFAULT '0', + `is_misfired` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.job: ~26 rows (approximately) /*!40000 ALTER TABLE `job` DISABLE KEYS */; @@ -407,9 +407,9 @@ INSERT INTO `job` (`id`, `name`, `display_name`, `cron_expression`, `create_time -- Dumping structure for table fineract_default.job_run_history DROP TABLE IF EXISTS `job_run_history`; CREATE TABLE IF NOT EXISTS `job_run_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `job_id` bigint(20) NOT NULL, - `version` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `job_id` BIGINT NOT NULL, + `version` BIGINT NOT NULL, `start_time` datetime NOT NULL, `end_time` datetime NOT NULL, `status` varchar(10) CHARACTER SET latin1 NOT NULL, @@ -419,7 +419,7 @@ CREATE TABLE IF NOT EXISTS `job_run_history` ( PRIMARY KEY (`id`), KEY `scheduledjobsFK` (`job_id`), CONSTRAINT `scheduledjobsFK` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.job_run_history: ~0 rows (approximately) /*!40000 ALTER TABLE `job_run_history` DISABLE KEYS */; @@ -429,15 +429,15 @@ CREATE TABLE IF NOT EXISTS `job_run_history` ( -- Dumping structure for table fineract_default.mix_taxonomy DROP TABLE IF EXISTS `mix_taxonomy`; CREATE TABLE IF NOT EXISTS `mix_taxonomy` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, - `namespace_id` int(11) DEFAULT NULL, + `namespace_id` INT DEFAULT NULL, `dimension` varchar(100) DEFAULT NULL, - `type` int(11) DEFAULT NULL, + `type` INT DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, - `need_mapping` tinyint(1) DEFAULT NULL, + `need_mapping` tinyint DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.mix_taxonomy: ~48 rows (approximately) /*!40000 ALTER TABLE `mix_taxonomy` DISABLE KEYS */; @@ -496,13 +496,13 @@ INSERT INTO `mix_taxonomy` (`id`, `name`, `namespace_id`, `dimension`, `type`, ` -- Dumping structure for table fineract_default.mix_taxonomy_mapping DROP TABLE IF EXISTS `mix_taxonomy_mapping`; CREATE TABLE IF NOT EXISTS `mix_taxonomy_mapping` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `identifier` varchar(50) NOT NULL DEFAULT '', `config` varchar(200) DEFAULT NULL, `last_update_date` datetime DEFAULT NULL, `currency` varchar(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.mix_taxonomy_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `mix_taxonomy_mapping` DISABLE KEYS */; @@ -514,39 +514,39 @@ INSERT INTO `mix_taxonomy_mapping` (`id`, `identifier`, `config`, `last_update_d -- Dumping structure for table fineract_default.mix_xbrl_namespace DROP TABLE IF EXISTS `mix_xbrl_namespace`; CREATE TABLE IF NOT EXISTS `mix_xbrl_namespace` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `prefix` varchar(20) NOT NULL DEFAULT '', `url` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNQUE` (`prefix`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.mix_xbrl_namespace: ~7 rows (approximately) /*!40000 ALTER TABLE `mix_xbrl_namespace` DISABLE KEYS */; INSERT INTO `mix_xbrl_namespace` (`id`, `prefix`, `url`) VALUES (1, 'ifrs', 'http://xbrl.iasb.org/taxonomy/2009-04-01/ifrs'), (2, 'iso4217', 'http://www.xbrl.org/2003/iso4217'), - (3, 'mix', 'http://www.themix.org/int/fr/ifrs/basi/YYYY-MM-DD/mx-cor'), + (3, 'mix', 'http://www.themix.org/INT/fr/ifrs/basi/YYYY-MM-DD/mx-cor'), (4, 'xbrldi', 'http://xbrl.org/2006/xbrldi'), (5, 'xbrli', 'http://www.xbrl.org/2003/instance'), (6, 'link', 'http://www.xbrl.org/2003/linkbase'), - (7, 'dc-all', 'http://www.themix.org/int/fr/ifrs/basi/2010-08-31/dc-all'); + (7, 'dc-all', 'http://www.themix.org/INT/fr/ifrs/basi/2010-08-31/dc-all'); /*!40000 ALTER TABLE `mix_xbrl_namespace` ENABLE KEYS */; -- Dumping structure for table fineract_default.m_account_transfer_details DROP TABLE IF EXISTS `m_account_transfer_details`; CREATE TABLE IF NOT EXISTS `m_account_transfer_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) NOT NULL, - `to_office_id` bigint(20) NOT NULL, - `from_client_id` bigint(20) DEFAULT NULL, - `to_client_id` bigint(20) DEFAULT NULL, - `from_savings_account_id` bigint(20) DEFAULT NULL, - `to_savings_account_id` bigint(20) DEFAULT NULL, - `from_loan_account_id` bigint(20) DEFAULT NULL, - `to_loan_account_id` bigint(20) DEFAULT NULL, - `transfer_type` smallint(2) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT NOT NULL, + `to_office_id` BIGINT NOT NULL, + `from_client_id` BIGINT DEFAULT NULL, + `to_client_id` BIGINT DEFAULT NULL, + `from_savings_account_id` BIGINT DEFAULT NULL, + `to_savings_account_id` BIGINT DEFAULT NULL, + `from_loan_account_id` BIGINT DEFAULT NULL, + `to_loan_account_id` BIGINT DEFAULT NULL, + `transfer_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_account_transfer_details_from_office` (`from_office_id`), KEY `FK_m_account_transfer_details_to_office` (`to_office_id`), @@ -564,7 +564,7 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_details` ( CONSTRAINT `FK_m_account_transfer_details_to_loan_account` FOREIGN KEY (`to_loan_account_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_m_account_transfer_details_to_office` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK_m_account_transfer_details_to_savings_account` FOREIGN KEY (`to_savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_account_transfer_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_account_transfer_details` DISABLE KEYS */; @@ -574,26 +574,26 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_details` ( -- Dumping structure for table fineract_default.m_account_transfer_standing_instructions DROP TABLE IF EXISTS `m_account_transfer_standing_instructions`; CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(250) NOT NULL, - `account_transfer_details_id` bigint(20) NOT NULL, - `priority` tinyint(2) NOT NULL, - `status` tinyint(2) NOT NULL, - `instruction_type` tinyint(2) NOT NULL, + `account_transfer_details_id` BIGINT NOT NULL, + `priority` TINYINT NOT NULL, + `status` TINYINT NOT NULL, + `instruction_type` TINYINT NOT NULL, `amount` decimal(19,6) DEFAULT NULL, `valid_from` date NOT NULL, `valid_till` date DEFAULT NULL, - `recurrence_type` tinyint(1) NOT NULL, - `recurrence_frequency` smallint(5) DEFAULT NULL, - `recurrence_interval` smallint(5) DEFAULT NULL, - `recurrence_on_day` smallint(2) DEFAULT NULL, - `recurrence_on_month` smallint(2) DEFAULT NULL, + `recurrence_type` tinyint NOT NULL, + `recurrence_frequency` SMALLINT DEFAULT NULL, + `recurrence_interval` SMALLINT DEFAULT NULL, + `recurrence_on_day` SMALLINT DEFAULT NULL, + `recurrence_on_month` SMALLINT DEFAULT NULL, `last_run_date` date DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `FK_m_standing_instructions_account_transfer_details` (`account_transfer_details_id`), CONSTRAINT `FK_m_standing_instructions_account_transfer_details` FOREIGN KEY (`account_transfer_details_id`) REFERENCES `m_account_transfer_details` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_account_transfer_standing_instructions: ~0 rows (approximately) /*!40000 ALTER TABLE `m_account_transfer_standing_instructions` DISABLE KEYS */; @@ -603,8 +603,8 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions` ( -- Dumping structure for table fineract_default.m_account_transfer_standing_instructions_history DROP TABLE IF EXISTS `m_account_transfer_standing_instructions_history`; CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `standing_instruction_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `standing_instruction_id` BIGINT NOT NULL, `status` varchar(20) NOT NULL, `execution_time` datetime NOT NULL, `amount` decimal(19,6) NOT NULL, @@ -612,7 +612,7 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions_history` ( PRIMARY KEY (`id`), KEY `FK_m_account_transfer_standing_instructions_history` (`standing_instruction_id`), CONSTRAINT `FK_m_account_transfer_standing_instructions_m_history` FOREIGN KEY (`standing_instruction_id`) REFERENCES `m_account_transfer_standing_instructions` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_account_transfer_standing_instructions_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_account_transfer_standing_instructions_history` DISABLE KEYS */; @@ -622,17 +622,17 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions_history` ( -- Dumping structure for table fineract_default.m_account_transfer_transaction DROP TABLE IF EXISTS `m_account_transfer_transaction`; CREATE TABLE IF NOT EXISTS `m_account_transfer_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_transfer_details_id` bigint(20) NOT NULL, - `from_savings_transaction_id` bigint(20) DEFAULT NULL, - `from_loan_transaction_id` bigint(20) DEFAULT NULL, - `to_savings_transaction_id` bigint(20) DEFAULT NULL, - `to_loan_transaction_id` bigint(20) DEFAULT NULL, - `is_reversed` tinyint(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_transfer_details_id` BIGINT NOT NULL, + `from_savings_transaction_id` BIGINT DEFAULT NULL, + `from_loan_transaction_id` BIGINT DEFAULT NULL, + `to_savings_transaction_id` BIGINT DEFAULT NULL, + `to_loan_transaction_id` BIGINT DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `transaction_date` date NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(200) NOT NULL, PRIMARY KEY (`id`), @@ -646,7 +646,7 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_transaction` ( CONSTRAINT `FK_m_account_transfer_transaction_from_m_savings_transaction` FOREIGN KEY (`from_savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`), CONSTRAINT `FK_m_account_transfer_transaction_to_m_loan_transaction` FOREIGN KEY (`to_loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`), CONSTRAINT `FK_m_account_transfer_transaction_to_m_savings_transaction` FOREIGN KEY (`to_savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_account_transfer_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_account_transfer_transaction` DISABLE KEYS */; @@ -656,7 +656,7 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_transaction` ( -- Dumping structure for table fineract_default.m_address DROP TABLE IF EXISTS `m_address`; CREATE TABLE IF NOT EXISTS `m_address` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `street` varchar(100) DEFAULT NULL, `address_line_1` varchar(100) DEFAULT NULL, `address_line_2` varchar(100) DEFAULT NULL, @@ -664,11 +664,11 @@ CREATE TABLE IF NOT EXISTS `m_address` ( `town_village` varchar(100) DEFAULT NULL, `city` varchar(100) DEFAULT NULL, `county_district` varchar(100) DEFAULT NULL, - `state_province_id` int(11) DEFAULT NULL, - `country_id` int(11) DEFAULT NULL, + `state_province_id` INT DEFAULT NULL, + `country_id` INT DEFAULT NULL, `postal_code` varchar(10) DEFAULT NULL, - `latitude` decimal(10,8) unsigned DEFAULT '0.00000000', - `longitude` decimal(10,8) unsigned DEFAULT '0.00000000', + `latitude` decimal(10,8) DEFAULT '0.00000000', + `longitude` decimal(10,8) DEFAULT '0.00000000', `created_by` varchar(100) DEFAULT NULL, `created_on` date DEFAULT NULL, `updated_by` varchar(100) DEFAULT NULL, @@ -678,7 +678,7 @@ CREATE TABLE IF NOT EXISTS `m_address` ( KEY `address_fields_codefk2` (`country_id`), CONSTRAINT `address_fields_codefk1` FOREIGN KEY (`state_province_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `address_fields_codefk2` FOREIGN KEY (`country_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_address: ~0 rows (approximately) /*!40000 ALTER TABLE `m_address` DISABLE KEYS */; @@ -688,10 +688,10 @@ CREATE TABLE IF NOT EXISTS `m_address` ( -- Dumping structure for table fineract_default.m_appuser DROP TABLE IF EXISTS `m_appuser`; CREATE TABLE IF NOT EXISTS `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -703,7 +703,7 @@ CREATE TABLE IF NOT EXISTS `m_appuser` ( `nonexpired_credentials` bit(1) NOT NULL, `enabled` bit(1) NOT NULL, `last_time_password_updated` date NOT NULL, - `password_never_expires` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'define if the password, should be check for validity period or not', + `password_never_expires` TINYINT NOT NULL DEFAULT '0' COMMENT 'define if the password, should be check for validity period or not', `is_self_service_user` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`id`), UNIQUE KEY `username_org` (`username`), @@ -712,7 +712,7 @@ CREATE TABLE IF NOT EXISTS `m_appuser` ( KEY `last_time_password_updated` (`last_time_password_updated`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `fk_m_appuser_002` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_appuser: ~2 rows (approximately) /*!40000 ALTER TABLE `m_appuser` DISABLE KEYS */; @@ -725,8 +725,8 @@ INSERT INTO `m_appuser` (`id`, `is_deleted`, `office_id`, `staff_id`, `username` -- Dumping structure for table fineract_default.m_appuser_previous_password DROP TABLE IF EXISTS `m_appuser_previous_password`; CREATE TABLE IF NOT EXISTS `m_appuser_previous_password` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `user_id` BIGINT NOT NULL, `password` varchar(255) NOT NULL, `removal_date` date NOT NULL, PRIMARY KEY (`id`), @@ -742,14 +742,14 @@ CREATE TABLE IF NOT EXISTS `m_appuser_previous_password` ( -- Dumping structure for table fineract_default.m_appuser_role DROP TABLE IF EXISTS `m_appuser_role`; CREATE TABLE IF NOT EXISTS `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_appuser_role: ~0 rows (approximately) /*!40000 ALTER TABLE `m_appuser_role` DISABLE KEYS */; @@ -761,26 +761,26 @@ INSERT INTO `m_appuser_role` (`appuser_id`, `role_id`) VALUES -- Dumping structure for table fineract_default.m_calendar DROP TABLE IF EXISTS `m_calendar`; CREATE TABLE IF NOT EXISTS `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(70) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `meeting_time` time DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_calendar: ~0 rows (approximately) /*!40000 ALTER TABLE `m_calendar` DISABLE KEYS */; @@ -790,24 +790,24 @@ CREATE TABLE IF NOT EXISTS `m_calendar` ( -- Dumping structure for table fineract_default.m_calendar_history DROP TABLE IF EXISTS `m_calendar_history`; CREATE TABLE IF NOT EXISTS `m_calendar_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, `title` varchar(70) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_history` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_history` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_calendar_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_calendar_history` DISABLE KEYS */; @@ -817,14 +817,14 @@ CREATE TABLE IF NOT EXISTS `m_calendar_history` ( -- Dumping structure for table fineract_default.m_calendar_instance DROP TABLE IF EXISTS `m_calendar_instance`; CREATE TABLE IF NOT EXISTS `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_calendar_instance: ~0 rows (approximately) /*!40000 ALTER TABLE `m_calendar_instance` DISABLE KEYS */; @@ -834,21 +834,21 @@ CREATE TABLE IF NOT EXISTS `m_calendar_instance` ( -- Dumping structure for table fineract_default.m_cashiers DROP TABLE IF EXISTS `m_cashiers`; CREATE TABLE IF NOT EXISTS `m_cashiers` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `staff_id` bigint(20) DEFAULT NULL, - `teller_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `staff_id` BIGINT DEFAULT NULL, + `teller_id` BIGINT DEFAULT NULL, `description` varchar(100) DEFAULT NULL, `start_date` date DEFAULT NULL, `end_date` date DEFAULT NULL, `start_time` varchar(10) DEFAULT NULL, `end_time` varchar(10) DEFAULT NULL, - `full_day` tinyint(4) DEFAULT NULL, + `full_day` TINYINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `IK_m_cashiers_m_staff` (`staff_id`), KEY `IK_m_cashiers_m_teller` (`teller_id`), CONSTRAINT `FK_m_cashiers_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`), CONSTRAINT `FK_m_cashiers_m_teller` FOREIGN KEY (`teller_id`) REFERENCES `m_tellers` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_cashiers: ~0 rows (approximately) /*!40000 ALTER TABLE `m_cashiers` DISABLE KEYS */; @@ -858,20 +858,20 @@ CREATE TABLE IF NOT EXISTS `m_cashiers` ( -- Dumping structure for table fineract_default.m_cashier_transactions DROP TABLE IF EXISTS `m_cashier_transactions`; CREATE TABLE IF NOT EXISTS `m_cashier_transactions` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cashier_id` bigint(20) NOT NULL, - `txn_type` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `cashier_id` BIGINT NOT NULL, + `txn_type` SMALLINT NOT NULL, `txn_amount` decimal(19,6) NOT NULL, `txn_date` date NOT NULL, `created_date` datetime NOT NULL, `entity_type` varchar(50) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, `txn_note` varchar(200) DEFAULT NULL, `currency_code` varchar(3) DEFAULT NULL, PRIMARY KEY (`id`), KEY `IK_m_teller_transactions_m_cashier` (`cashier_id`), CONSTRAINT `FK_m_teller_transactions_m_cashiers` FOREIGN KEY (`cashier_id`) REFERENCES `m_cashiers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_cashier_transactions: ~0 rows (approximately) /*!40000 ALTER TABLE `m_cashier_transactions` DISABLE KEYS */; @@ -881,32 +881,32 @@ CREATE TABLE IF NOT EXISTS `m_cashier_transactions` ( -- Dumping structure for table fineract_default.m_charge DROP TABLE IF EXISTS `m_charge`; CREATE TABLE IF NOT EXISTS `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, - `charge_payment_mode_enum` smallint(5) DEFAULT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, + `charge_payment_mode_enum` SMALLINT DEFAULT NULL, `amount` decimal(19,6) NOT NULL, - `fee_on_day` smallint(5) DEFAULT NULL, - `fee_interval` smallint(5) DEFAULT NULL, - `fee_on_month` smallint(5) DEFAULT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `fee_on_day` SMALLINT DEFAULT NULL, + `fee_interval` SMALLINT DEFAULT NULL, + `fee_on_month` SMALLINT DEFAULT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', `min_cap` decimal(19,6) DEFAULT NULL, `max_cap` decimal(19,6) DEFAULT NULL, - `fee_frequency` smallint(5) DEFAULT NULL, - `income_or_liability_account_id` bigint(20) DEFAULT NULL, - `tax_group_id` bigint(20) DEFAULT NULL, + `fee_frequency` SMALLINT DEFAULT NULL, + `income_or_liability_account_id` BIGINT DEFAULT NULL, + `tax_group_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `FK_m_charge_acc_gl_account` (`income_or_liability_account_id`), KEY `FK_m_charge_m_tax_group` (`tax_group_id`), CONSTRAINT `FK_m_charge_acc_gl_account` FOREIGN KEY (`income_or_liability_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_m_charge_m_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_charge` DISABLE KEYS */; @@ -916,48 +916,48 @@ CREATE TABLE IF NOT EXISTS `m_charge` ( -- Dumping structure for table fineract_default.m_client DROP TABLE IF EXISTS `m_client`; CREATE TABLE IF NOT EXISTS `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `status_enum` int(5) NOT NULL DEFAULT '300', - `sub_status` int(11) DEFAULT NULL, + `status_enum` INT NOT NULL DEFAULT '300', + `sub_status` INT DEFAULT NULL, `activation_date` date DEFAULT NULL, `office_joining_date` date DEFAULT NULL, - `office_id` bigint(20) NOT NULL, - `transfer_to_office_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT NOT NULL, + `transfer_to_office_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `fullname` varchar(100) DEFAULT NULL, `display_name` varchar(100) NOT NULL, `mobile_no` varchar(50) DEFAULT NULL, - `gender_cv_id` int(11) DEFAULT NULL, + `gender_cv_id` INT DEFAULT NULL, `date_of_birth` date DEFAULT NULL, - `image_id` bigint(20) DEFAULT NULL, - `closure_reason_cv_id` int(11) DEFAULT NULL, + `image_id` BIGINT DEFAULT NULL, + `closure_reason_cv_id` INT DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `updated_by` bigint(20) DEFAULT NULL, + `updated_by` BIGINT DEFAULT NULL, `updated_on` date DEFAULT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, - `activatedon_userid` bigint(20) DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, - `default_savings_product` bigint(20) DEFAULT NULL, - `default_savings_account` bigint(20) DEFAULT NULL, - `client_type_cv_id` int(11) DEFAULT NULL, - `client_classification_cv_id` int(11) DEFAULT NULL, - `reject_reason_cv_id` int(11) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, + `activatedon_userid` BIGINT DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, + `default_savings_product` BIGINT DEFAULT NULL, + `default_savings_account` BIGINT DEFAULT NULL, + `client_type_cv_id` INT DEFAULT NULL, + `client_classification_cv_id` INT DEFAULT NULL, + `reject_reason_cv_id` INT DEFAULT NULL, `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, - `withdraw_reason_cv_id` int(11) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, + `withdraw_reason_cv_id` INT DEFAULT NULL, `withdrawn_on_date` date DEFAULT NULL, - `withdraw_on_userid` bigint(20) DEFAULT NULL, + `withdraw_on_userid` BIGINT DEFAULT NULL, `reactivated_on_date` date DEFAULT NULL, - `reactivated_on_userid` bigint(20) DEFAULT NULL, - `legal_form_enum` int(5) DEFAULT NULL, + `reactivated_on_userid` BIGINT DEFAULT NULL, + `legal_form_enum` INT DEFAULT NULL, `reopened_on_date` date DEFAULT NULL, - `reopened_by_userid` bigint(20) DEFAULT NULL, + `reopened_by_userid` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), @@ -988,7 +988,7 @@ CREATE TABLE IF NOT EXISTS `m_client` ( CONSTRAINT `FK_m_client_type_m_code_value` FOREIGN KEY (`client_type_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_client_type_m_code_value_withdraw` FOREIGN KEY (`withdraw_reason_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_client_type_mcode_value_reject` FOREIGN KEY (`reject_reason_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_client: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client` DISABLE KEYS */; @@ -998,18 +998,18 @@ CREATE TABLE IF NOT EXISTS `m_client` ( -- Dumping structure for table fineract_default.m_client_address DROP TABLE IF EXISTS `m_client_address`; CREATE TABLE IF NOT EXISTS `m_client_address` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL DEFAULT '0', - `address_id` bigint(20) NOT NULL DEFAULT '0', - `address_type_id` int(11) NOT NULL DEFAULT '0', - `is_active` tinyint(4) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL DEFAULT '0', + `address_id` BIGINT NOT NULL DEFAULT '0', + `address_type_id` INT NOT NULL DEFAULT '0', + `is_active` TINYINT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `addressIdFk` (`address_id`), KEY `address_codefk` (`address_type_id`), KEY `clientaddressfk` (`client_id`), CONSTRAINT `address_codefk` FOREIGN KEY (`address_type_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `clientaddressfk` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_client_address: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_address` DISABLE KEYS */; @@ -1019,16 +1019,16 @@ CREATE TABLE IF NOT EXISTS `m_client_address` ( -- Dumping structure for table fineract_default.m_client_attendance DROP TABLE IF EXISTS `m_client_attendance`; CREATE TABLE IF NOT EXISTS `m_client_attendance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL DEFAULT '0', - `meeting_id` bigint(20) NOT NULL, - `attendance_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL DEFAULT '0', + `meeting_id` BIGINT NOT NULL, + `attendance_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_client_meeting_attendance` (`client_id`,`meeting_id`), KEY `FK_m_meeting_m_client_attendance` (`meeting_id`), CONSTRAINT `FK_m_client_m_client_attendance` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_meeting_m_client_attendance` FOREIGN KEY (`meeting_id`) REFERENCES `m_meeting` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_client_attendance: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_attendance` DISABLE KEYS */; @@ -1038,28 +1038,28 @@ CREATE TABLE IF NOT EXISTS `m_client_attendance` ( -- Dumping structure for table fineract_default.m_client_charge DROP TABLE IF EXISTS `m_client_charge`; CREATE TABLE IF NOT EXISTS `m_client_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, `charge_due_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `amount_paid_derived` decimal(19,6) DEFAULT NULL, `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL, - `is_paid_derived` tinyint(1) DEFAULT NULL, - `waived` tinyint(1) DEFAULT NULL, - `is_active` tinyint(1) DEFAULT NULL, + `is_paid_derived` tinyint DEFAULT NULL, + `waived` tinyint DEFAULT NULL, + `is_active` tinyint DEFAULT NULL, `inactivated_on_date` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_client_charge_m_client` (`client_id`), KEY `FK_m_client_charge_m_charge` (`charge_id`), CONSTRAINT `FK_m_client_charge_m_charge` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `FK_m_client_charge_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_client_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_charge` DISABLE KEYS */; @@ -1069,16 +1069,16 @@ CREATE TABLE IF NOT EXISTS `m_client_charge` ( -- Dumping structure for table fineract_default.m_client_charge_paid_by DROP TABLE IF EXISTS `m_client_charge_paid_by`; CREATE TABLE IF NOT EXISTS `m_client_charge_paid_by` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_transaction_id` bigint(20) NOT NULL, - `client_charge_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_transaction_id` BIGINT NOT NULL, + `client_charge_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_client_charge_paid_by_m_client_transaction` (`client_transaction_id`), KEY `FK_m_client_charge_paid_by_m_client_charge` (`client_charge_id`), CONSTRAINT `FK_m_client_charge_paid_by_m_client_charge` FOREIGN KEY (`client_charge_id`) REFERENCES `m_client_charge` (`id`), CONSTRAINT `FK_m_client_charge_paid_by_m_client_transaction` FOREIGN KEY (`client_transaction_id`) REFERENCES `m_client_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_client_charge_paid_by: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_charge_paid_by` DISABLE KEYS */; @@ -1088,15 +1088,15 @@ CREATE TABLE IF NOT EXISTS `m_client_charge_paid_by` ( -- Dumping structure for table fineract_default.m_client_identifier DROP TABLE IF EXISTS `m_client_identifier`; CREATE TABLE IF NOT EXISTS `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, - `status` int(5) NOT NULL DEFAULT '300', - `active` int(5) DEFAULT NULL, + `status` INT NOT NULL DEFAULT '300', + `active` INT DEFAULT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -1106,7 +1106,7 @@ CREATE TABLE IF NOT EXISTS `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_client_identifier: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_identifier` DISABLE KEYS */; @@ -1116,18 +1116,18 @@ CREATE TABLE IF NOT EXISTS `m_client_identifier` ( -- Dumping structure for table fineract_default.m_client_non_person DROP TABLE IF EXISTS `m_client_non_person`; CREATE TABLE IF NOT EXISTS `m_client_non_person` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `constitution_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `constitution_cv_id` INT NOT NULL, `incorp_no` varchar(50) DEFAULT NULL, `incorp_validity_till` datetime DEFAULT NULL, - `main_business_line_cv_id` int(11) DEFAULT NULL, + `main_business_line_cv_id` INT DEFAULT NULL, `remarks` varchar(150) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `client_id` (`client_id`), KEY `FK_client_id` (`client_id`), CONSTRAINT `FK_client_id` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_client_non_person: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_non_person` DISABLE KEYS */; @@ -1137,25 +1137,25 @@ CREATE TABLE IF NOT EXISTS `m_client_non_person` ( -- Dumping structure for table fineract_default.m_client_transaction DROP TABLE IF EXISTS `m_client_transaction`; CREATE TABLE IF NOT EXISTS `m_client_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `payment_detail_id` bigint(20) DEFAULT NULL, - `is_reversed` tinyint(1) NOT NULL, + `payment_detail_id` BIGINT DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `external_id` varchar(50) DEFAULT NULL, `transaction_date` date NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `created_date` datetime NOT NULL, - `appuser_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `external_id` (`external_id`), KEY `FK_m_client_transaction_m_client` (`client_id`), KEY `FK_m_client_transaction_m_appuser` (`appuser_id`), CONSTRAINT `FK_m_client_transaction_m_appuser` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_client_transaction_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_client_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_transaction` DISABLE KEYS */; @@ -1165,12 +1165,12 @@ CREATE TABLE IF NOT EXISTS `m_client_transaction` ( -- Dumping structure for table fineract_default.m_code DROP TABLE IF EXISTS `m_code`; CREATE TABLE IF NOT EXISTS `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` tinyint(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_code: ~28 rows (approximately) /*!40000 ALTER TABLE `m_code` DISABLE KEYS */; @@ -1209,19 +1209,19 @@ INSERT INTO `m_code` (`id`, `code_name`, `is_system_defined`) VALUES -- Dumping structure for table fineract_default.m_code_value DROP TABLE IF EXISTS `m_code_value`; CREATE TABLE IF NOT EXISTS `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, `code_description` varchar(500) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', - `code_score` int(11) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', - `is_mandatory` tinyint(1) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', + `code_score` INT DEFAULT NULL, + `is_active` tinyint NOT NULL DEFAULT '1', + `is_mandatory` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_code_value: ~13 rows (approximately) /*!40000 ALTER TABLE `m_code_value` DISABLE KEYS */; @@ -1245,16 +1245,16 @@ INSERT INTO `m_code_value` (`id`, `code_id`, `code_value`, `code_description`, ` -- Dumping structure for table fineract_default.m_currency DROP TABLE IF EXISTS `m_currency`; CREATE TABLE IF NOT EXISTS `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `decimal_places` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_currency: ~163 rows (approximately) /*!40000 ALTER TABLE `m_currency` DISABLE KEYS */; @@ -1428,17 +1428,17 @@ INSERT INTO `m_currency` (`id`, `code`, `decimal_places`, `currency_multiplesof` -- Dumping structure for table fineract_default.m_deposit_account_on_hold_transaction DROP TABLE IF EXISTS `m_deposit_account_on_hold_transaction`; CREATE TABLE IF NOT EXISTS `m_deposit_account_on_hold_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `transaction_type_enum` smallint(1) NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, - `is_reversed` tinyint(1) NOT NULL DEFAULT '0', + `is_reversed` tinyint NOT NULL DEFAULT '0', `created_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_deposit_on_hold_transaction_m_savings_account` (`savings_account_id`), CONSTRAINT `FK_deposit_on_hold_transaction_m_savings_account` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_deposit_account_on_hold_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_account_on_hold_transaction` DISABLE KEYS */; @@ -1448,19 +1448,19 @@ CREATE TABLE IF NOT EXISTS `m_deposit_account_on_hold_transaction` ( -- Dumping structure for table fineract_default.m_deposit_account_recurring_detail DROP TABLE IF EXISTS `m_deposit_account_recurring_detail`; CREATE TABLE IF NOT EXISTS `m_deposit_account_recurring_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL DEFAULT '0', `mandatory_recommended_deposit_amount` decimal(19,6) DEFAULT NULL, - `is_mandatory` tinyint(4) NOT NULL DEFAULT '0', - `allow_withdrawal` tinyint(4) NOT NULL DEFAULT '0', - `adjust_advance_towards_future_payments` tinyint(4) NOT NULL DEFAULT '1', - `is_calendar_inherited` tinyint(4) NOT NULL DEFAULT '0', + `is_mandatory` TINYINT NOT NULL DEFAULT '0', + `allow_withdrawal` TINYINT NOT NULL DEFAULT '0', + `adjust_advance_towards_future_payments` TINYINT NOT NULL DEFAULT '1', + `is_calendar_inherited` TINYINT NOT NULL DEFAULT '0', `total_overdue_amount` decimal(19,6) DEFAULT NULL, - `no_of_overdue_installments` int(11) DEFAULT NULL, + `no_of_overdue_installments` INT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKDARD00000000000001` (`savings_account_id`), CONSTRAINT `FKDARD00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_deposit_account_recurring_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_account_recurring_detail` DISABLE KEYS */; @@ -1470,29 +1470,29 @@ CREATE TABLE IF NOT EXISTS `m_deposit_account_recurring_detail` ( -- Dumping structure for table fineract_default.m_deposit_account_term_and_preclosure DROP TABLE IF EXISTS `m_deposit_account_term_and_preclosure`; CREATE TABLE IF NOT EXISTS `m_deposit_account_term_and_preclosure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL DEFAULT '0', - `min_deposit_term` int(11) DEFAULT NULL, - `max_deposit_term` int(11) DEFAULT NULL, - `min_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `max_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `in_multiples_of_deposit_term` int(11) DEFAULT NULL, - `in_multiples_of_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `pre_closure_penal_applicable` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL DEFAULT '0', + `min_deposit_term` INT DEFAULT NULL, + `max_deposit_term` INT DEFAULT NULL, + `min_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `max_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `in_multiples_of_deposit_term` INT DEFAULT NULL, + `in_multiples_of_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `pre_closure_penal_applicable` SMALLINT DEFAULT NULL, `pre_closure_penal_interest` decimal(19,6) DEFAULT NULL, - `pre_closure_penal_interest_on_enum` smallint(5) DEFAULT NULL, - `deposit_period` int(11) DEFAULT NULL, - `deposit_period_frequency_enum` smallint(5) DEFAULT NULL, + `pre_closure_penal_interest_on_enum` SMALLINT DEFAULT NULL, + `deposit_period` INT DEFAULT NULL, + `deposit_period_frequency_enum` SMALLINT DEFAULT NULL, `deposit_amount` decimal(19,6) DEFAULT NULL, `maturity_amount` decimal(19,6) DEFAULT NULL, `maturity_date` date DEFAULT NULL, - `on_account_closure_enum` smallint(5) DEFAULT NULL, + `on_account_closure_enum` SMALLINT DEFAULT NULL, `expected_firstdepositon_date` date DEFAULT NULL, - `transfer_interest_to_linked_account` tinyint(1) NOT NULL DEFAULT '0', + `transfer_interest_to_linked_account` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FKDATP00000000000001` (`savings_account_id`), CONSTRAINT `FKDATP00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_deposit_account_term_and_preclosure: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_account_term_and_preclosure` DISABLE KEYS */; @@ -1502,13 +1502,13 @@ CREATE TABLE IF NOT EXISTS `m_deposit_account_term_and_preclosure` ( -- Dumping structure for table fineract_default.m_deposit_product_interest_rate_chart DROP TABLE IF EXISTS `m_deposit_product_interest_rate_chart`; CREATE TABLE IF NOT EXISTS `m_deposit_product_interest_rate_chart` ( - `deposit_product_id` bigint(20) NOT NULL, - `interest_rate_chart_id` bigint(20) NOT NULL, + `deposit_product_id` BIGINT NOT NULL, + `interest_rate_chart_id` BIGINT NOT NULL, UNIQUE KEY `deposit_product_id_interest_rate_chart_id` (`deposit_product_id`,`interest_rate_chart_id`), KEY `FKDPIRC00000000000002` (`interest_rate_chart_id`), CONSTRAINT `FKDPIRC00000000000001` FOREIGN KEY (`deposit_product_id`) REFERENCES `m_savings_product` (`id`), CONSTRAINT `FKDPIRC00000000000002` FOREIGN KEY (`interest_rate_chart_id`) REFERENCES `m_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_deposit_product_interest_rate_chart: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_product_interest_rate_chart` DISABLE KEYS */; @@ -1518,15 +1518,15 @@ CREATE TABLE IF NOT EXISTS `m_deposit_product_interest_rate_chart` ( -- Dumping structure for table fineract_default.m_deposit_product_recurring_detail DROP TABLE IF EXISTS `m_deposit_product_recurring_detail`; CREATE TABLE IF NOT EXISTS `m_deposit_product_recurring_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_product_id` bigint(20) NOT NULL DEFAULT '0', - `is_mandatory` tinyint(1) NOT NULL DEFAULT '1', - `allow_withdrawal` tinyint(1) NOT NULL DEFAULT '0', - `adjust_advance_towards_future_payments` tinyint(1) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_product_id` BIGINT NOT NULL DEFAULT '0', + `is_mandatory` tinyint NOT NULL DEFAULT '1', + `allow_withdrawal` tinyint NOT NULL DEFAULT '0', + `adjust_advance_towards_future_payments` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `FKDPRD00000000000001` (`savings_product_id`), CONSTRAINT `FKDPRD00000000000001` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_deposit_product_recurring_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_product_recurring_detail` DISABLE KEYS */; @@ -1536,24 +1536,24 @@ CREATE TABLE IF NOT EXISTS `m_deposit_product_recurring_detail` ( -- Dumping structure for table fineract_default.m_deposit_product_term_and_preclosure DROP TABLE IF EXISTS `m_deposit_product_term_and_preclosure`; CREATE TABLE IF NOT EXISTS `m_deposit_product_term_and_preclosure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_product_id` bigint(20) NOT NULL DEFAULT '0', - `min_deposit_term` int(11) DEFAULT NULL, - `max_deposit_term` int(11) DEFAULT NULL, - `min_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `max_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `in_multiples_of_deposit_term` int(11) DEFAULT NULL, - `in_multiples_of_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `pre_closure_penal_applicable` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_product_id` BIGINT NOT NULL DEFAULT '0', + `min_deposit_term` INT DEFAULT NULL, + `max_deposit_term` INT DEFAULT NULL, + `min_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `max_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `in_multiples_of_deposit_term` INT DEFAULT NULL, + `in_multiples_of_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `pre_closure_penal_applicable` SMALLINT DEFAULT NULL, `pre_closure_penal_interest` decimal(19,6) DEFAULT NULL, - `pre_closure_penal_interest_on_enum` smallint(5) DEFAULT NULL, + `pre_closure_penal_interest_on_enum` SMALLINT DEFAULT NULL, `min_deposit_amount` decimal(19,6) DEFAULT NULL, `max_deposit_amount` decimal(19,6) DEFAULT NULL, `deposit_amount` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKDPTP00000000000001` (`savings_product_id`), CONSTRAINT `FKDPTP00000000000001` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_deposit_product_term_and_preclosure: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_product_term_and_preclosure` DISABLE KEYS */; @@ -1563,18 +1563,18 @@ CREATE TABLE IF NOT EXISTS `m_deposit_product_term_and_preclosure` ( -- Dumping structure for table fineract_default.m_document DROP TABLE IF EXISTS `m_document`; CREATE TABLE IF NOT EXISTS `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(500) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', - `storage_type_enum` smallint(5) DEFAULT NULL, + `storage_type_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_document: ~0 rows (approximately) /*!40000 ALTER TABLE `m_document` DISABLE KEYS */; @@ -1584,18 +1584,18 @@ CREATE TABLE IF NOT EXISTS `m_document` ( -- Dumping structure for table fineract_default.m_entity_datatable_check DROP TABLE IF EXISTS `m_entity_datatable_check`; CREATE TABLE IF NOT EXISTS `m_entity_datatable_check` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `application_table_name` varchar(200) NOT NULL, `x_registered_table_name` varchar(50) NOT NULL, - `status_enum` int(11) NOT NULL, - `system_defined` tinyint(4) NOT NULL DEFAULT '0', - `product_id` bigint(10) DEFAULT NULL, + `status_enum` INT NOT NULL, + `system_defined` TINYINT NOT NULL DEFAULT '0', + `product_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_entity_check` (`application_table_name`,`x_registered_table_name`,`status_enum`,`product_id`), KEY `x_registered_table_name` (`x_registered_table_name`), KEY `product_id` (`product_id`), CONSTRAINT `m_entity_datatable_check_ibfk_1` FOREIGN KEY (`x_registered_table_name`) REFERENCES `x_registered_table` (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_entity_datatable_check: ~0 rows (approximately) /*!40000 ALTER TABLE `m_entity_datatable_check` DISABLE KEYS */; @@ -1605,13 +1605,13 @@ CREATE TABLE IF NOT EXISTS `m_entity_datatable_check` ( -- Dumping structure for table fineract_default.m_entity_relation DROP TABLE IF EXISTS `m_entity_relation`; CREATE TABLE IF NOT EXISTS `m_entity_relation` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_entity_type` int(10) NOT NULL, - `to_entity_type` int(10) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_entity_type` INT NOT NULL, + `to_entity_type` INT NOT NULL, `code_name` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `from_entity_type_to_entity_type_code_name` (`from_entity_type`,`to_entity_type`,`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_entity_relation: ~5 rows (approximately) /*!40000 ALTER TABLE `m_entity_relation` DISABLE KEYS */; @@ -1627,18 +1627,18 @@ INSERT INTO `m_entity_relation` (`id`, `from_entity_type`, `to_entity_type`, `co -- Dumping structure for table fineract_default.m_entity_to_entity_access DROP TABLE IF EXISTS `m_entity_to_entity_access`; CREATE TABLE IF NOT EXISTS `m_entity_to_entity_access` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `entity_type` varchar(50) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `access_type_code_value_id` int(11) NOT NULL, + `entity_id` BIGINT NOT NULL, + `access_type_code_value_id` INT NOT NULL, `second_entity_type` varchar(50) NOT NULL, - `second_entity_id` bigint(20) NOT NULL, + `second_entity_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id_uniq_m_entity_to_entity_access` (`entity_type`,`entity_id`,`access_type_code_value_id`,`second_entity_type`,`second_entity_id`), KEY `IDX_OFFICE` (`entity_type`,`entity_id`), KEY `FK_access_type_code_m_code_value` (`access_type_code_value_id`), CONSTRAINT `FK_access_type_code_m_code_value` FOREIGN KEY (`access_type_code_value_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_entity_to_entity_access: ~0 rows (approximately) /*!40000 ALTER TABLE `m_entity_to_entity_access` DISABLE KEYS */; @@ -1648,16 +1648,16 @@ CREATE TABLE IF NOT EXISTS `m_entity_to_entity_access` ( -- Dumping structure for table fineract_default.m_entity_to_entity_mapping DROP TABLE IF EXISTS `m_entity_to_entity_mapping`; CREATE TABLE IF NOT EXISTS `m_entity_to_entity_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `rel_id` bigint(20) NOT NULL DEFAULT '0', - `from_id` bigint(20) NOT NULL DEFAULT '0', - `to_id` bigint(20) unsigned NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `rel_id` BIGINT NOT NULL DEFAULT '0', + `from_id` BIGINT NOT NULL DEFAULT '0', + `to_id` BIGINT unsigned NOT NULL, `start_date` date DEFAULT NULL, `end_date` date DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `rel_id_from_id_to_id` (`rel_id`,`from_id`,`to_id`), CONSTRAINT `FK__rel_id_m_entity_relation_id` FOREIGN KEY (`rel_id`) REFERENCES `m_entity_relation` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_entity_to_entity_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_entity_to_entity_mapping` DISABLE KEYS */; @@ -1667,15 +1667,15 @@ CREATE TABLE IF NOT EXISTS `m_entity_to_entity_mapping` ( -- Dumping structure for table fineract_default.m_field_configuration DROP TABLE IF EXISTS `m_field_configuration`; CREATE TABLE IF NOT EXISTS `m_field_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `entity` varchar(100) NOT NULL, `subentity` varchar(100) NOT NULL, `field` varchar(100) NOT NULL, - `is_enabled` tinyint(4) NOT NULL, - `is_mandatory` tinyint(4) NOT NULL, + `is_enabled` TINYINT NOT NULL, + `is_mandatory` TINYINT NOT NULL, `validation_regex` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_field_configuration: ~18 rows (approximately) /*!40000 ALTER TABLE `m_field_configuration` DISABLE KEYS */; @@ -1704,17 +1704,17 @@ INSERT INTO `m_field_configuration` (`id`, `entity`, `subentity`, `field`, `is_e -- Dumping structure for table fineract_default.m_floating_rates DROP TABLE IF EXISTS `m_floating_rates`; CREATE TABLE IF NOT EXISTS `m_floating_rates` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, `is_base_lending_rate` bit(1) NOT NULL DEFAULT b'0', `is_active` bit(1) NOT NULL DEFAULT b'1', - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_floating_rates: ~0 rows (approximately) /*!40000 ALTER TABLE `m_floating_rates` DISABLE KEYS */; @@ -1724,20 +1724,20 @@ CREATE TABLE IF NOT EXISTS `m_floating_rates` ( -- Dumping structure for table fineract_default.m_floating_rates_periods DROP TABLE IF EXISTS `m_floating_rates_periods`; CREATE TABLE IF NOT EXISTS `m_floating_rates_periods` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `floating_rates_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `floating_rates_id` BIGINT NOT NULL, `from_date` datetime NOT NULL, `interest_rate` decimal(19,6) NOT NULL, `is_differential_to_base_lending_rate` bit(1) NOT NULL DEFAULT b'0', `is_active` bit(1) NOT NULL DEFAULT b'1', - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_mappings_m_floating_rates` (`floating_rates_id`), CONSTRAINT `FK_mappings_m_floating_rates` FOREIGN KEY (`floating_rates_id`) REFERENCES `m_floating_rates` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_floating_rates_periods: ~0 rows (approximately) /*!40000 ALTER TABLE `m_floating_rates_periods` DISABLE KEYS */; @@ -1747,13 +1747,13 @@ CREATE TABLE IF NOT EXISTS `m_floating_rates_periods` ( -- Dumping structure for table fineract_default.m_fund DROP TABLE IF EXISTS `m_fund`; CREATE TABLE IF NOT EXISTS `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_fund: ~0 rows (approximately) /*!40000 ALTER TABLE `m_fund` DISABLE KEYS */; @@ -1763,22 +1763,22 @@ CREATE TABLE IF NOT EXISTS `m_fund` ( -- Dumping structure for table fineract_default.m_group DROP TABLE IF EXISTS `m_group`; CREATE TABLE IF NOT EXISTS `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `external_id` varchar(100) DEFAULT NULL, - `status_enum` int(5) NOT NULL DEFAULT '300', + `status_enum` INT NOT NULL DEFAULT '300', `activation_date` date DEFAULT NULL, - `office_id` bigint(20) NOT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `parent_id` bigint(20) DEFAULT NULL, - `level_id` int(11) NOT NULL, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, + `level_id` INT NOT NULL, `display_name` varchar(100) NOT NULL, `hierarchy` varchar(100) DEFAULT NULL, - `closure_reason_cv_id` int(11) DEFAULT NULL, + `closure_reason_cv_id` INT DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `activatedon_userid` bigint(20) DEFAULT NULL, + `activatedon_userid` BIGINT DEFAULT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `account_no` varchar(20) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`display_name`,`level_id`), @@ -1794,7 +1794,7 @@ CREATE TABLE IF NOT EXISTS `m_group` ( CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`), CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_group: ~0 rows (approximately) /*!40000 ALTER TABLE `m_group` DISABLE KEYS */; @@ -1804,13 +1804,13 @@ CREATE TABLE IF NOT EXISTS `m_group` ( -- Dumping structure for table fineract_default.m_group_client DROP TABLE IF EXISTS `m_group_client`; CREATE TABLE IF NOT EXISTS `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_group_client: ~0 rows (approximately) /*!40000 ALTER TABLE `m_group_client` DISABLE KEYS */; @@ -1820,16 +1820,16 @@ CREATE TABLE IF NOT EXISTS `m_group_client` ( -- Dumping structure for table fineract_default.m_group_level DROP TABLE IF EXISTS `m_group_level`; CREATE TABLE IF NOT EXISTS `m_group_level` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `parent_id` int(11) DEFAULT NULL, - `super_parent` tinyint(1) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `parent_id` INT DEFAULT NULL, + `super_parent` tinyint NOT NULL, `level_name` varchar(100) NOT NULL, - `recursable` tinyint(1) NOT NULL, - `can_have_clients` tinyint(1) NOT NULL, + `recursable` tinyint NOT NULL, + `can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_group_level: ~2 rows (approximately) /*!40000 ALTER TABLE `m_group_level` DISABLE KEYS */; @@ -1842,10 +1842,10 @@ INSERT INTO `m_group_level` (`id`, `parent_id`, `super_parent`, `level_name`, `r -- Dumping structure for table fineract_default.m_group_roles DROP TABLE IF EXISTS `m_group_roles`; CREATE TABLE IF NOT EXISTS `m_group_roles` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `role_cv_id` int(11) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `role_cv_id` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNIQUE_GROUP_ROLES` (`client_id`,`group_id`,`role_cv_id`), KEY `FKGroupRoleClientId` (`client_id`), @@ -1854,7 +1854,7 @@ CREATE TABLE IF NOT EXISTS `m_group_roles` ( CONSTRAINT `FKGroupRoleClientId` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKGroupRoleGroupId` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_grouprole_m_codevalue` FOREIGN KEY (`role_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_group_roles: ~0 rows (approximately) /*!40000 ALTER TABLE `m_group_roles` DISABLE KEYS */; @@ -1864,11 +1864,11 @@ CREATE TABLE IF NOT EXISTS `m_group_roles` ( -- Dumping structure for table fineract_default.m_guarantor DROP TABLE IF EXISTS `m_guarantor`; CREATE TABLE IF NOT EXISTS `m_guarantor` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `client_reln_cv_id` int(11) DEFAULT NULL, - `type_enum` smallint(5) NOT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `client_reln_cv_id` INT DEFAULT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `dob` date DEFAULT NULL, @@ -1881,13 +1881,13 @@ CREATE TABLE IF NOT EXISTS `m_guarantor` ( `house_phone_number` varchar(20) DEFAULT NULL, `mobile_number` varchar(20) DEFAULT NULL, `comment` varchar(500) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `FK_m_guarantor_m_loan` (`loan_id`), KEY `FK_m_guarantor_m_code_value` (`client_reln_cv_id`), CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_guarantor: ~0 rows (approximately) /*!40000 ALTER TABLE `m_guarantor` DISABLE KEYS */; @@ -1897,20 +1897,20 @@ CREATE TABLE IF NOT EXISTS `m_guarantor` ( -- Dumping structure for table fineract_default.m_guarantor_funding_details DROP TABLE IF EXISTS `m_guarantor_funding_details`; CREATE TABLE IF NOT EXISTS `m_guarantor_funding_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `guarantor_id` bigint(20) NOT NULL, - `account_associations_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `guarantor_id` BIGINT NOT NULL, + `account_associations_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, `amount_released_derived` decimal(19,6) DEFAULT NULL, `amount_remaining_derived` decimal(19,6) DEFAULT NULL, `amount_transfered_derived` decimal(19,6) DEFAULT NULL, - `status_enum` smallint(3) NOT NULL, + `status_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_guarantor_fund_details_m_guarantor` (`guarantor_id`), KEY `FK_m_guarantor_fund_details_account_associations_id` (`account_associations_id`), CONSTRAINT `FK_m_guarantor_fund_details_account_associations_id` FOREIGN KEY (`account_associations_id`) REFERENCES `m_portfolio_account_associations` (`id`), CONSTRAINT `FK_m_guarantor_fund_details_m_guarantor` FOREIGN KEY (`guarantor_id`) REFERENCES `m_guarantor` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_guarantor_funding_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_guarantor_funding_details` DISABLE KEYS */; @@ -1920,11 +1920,11 @@ CREATE TABLE IF NOT EXISTS `m_guarantor_funding_details` ( -- Dumping structure for table fineract_default.m_guarantor_transaction DROP TABLE IF EXISTS `m_guarantor_transaction`; CREATE TABLE IF NOT EXISTS `m_guarantor_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `guarantor_fund_detail_id` bigint(20) NOT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `deposit_on_hold_transaction_id` bigint(20) NOT NULL, - `is_reversed` tinyint(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `guarantor_fund_detail_id` BIGINT NOT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `deposit_on_hold_transaction_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FK_guarantor_transaction_m_deposit_account_on_hold_transaction` (`deposit_on_hold_transaction_id`), KEY `FK_guarantor_transaction_guarantor_fund_detail` (`guarantor_fund_detail_id`), @@ -1932,7 +1932,7 @@ CREATE TABLE IF NOT EXISTS `m_guarantor_transaction` ( CONSTRAINT `FK_guarantor_transaction_guarantor_fund_detail` FOREIGN KEY (`guarantor_fund_detail_id`) REFERENCES `m_guarantor_funding_details` (`id`), CONSTRAINT `FK_guarantor_transaction_m_deposit_account_on_hold_transaction` FOREIGN KEY (`deposit_on_hold_transaction_id`) REFERENCES `m_deposit_account_on_hold_transaction` (`id`), CONSTRAINT `FK_guarantor_transaction_m_loan_transaction` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_guarantor_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_guarantor_transaction` DISABLE KEYS */; @@ -1942,17 +1942,17 @@ CREATE TABLE IF NOT EXISTS `m_guarantor_transaction` ( -- Dumping structure for table fineract_default.m_holiday DROP TABLE IF EXISTS `m_holiday`; CREATE TABLE IF NOT EXISTS `m_holiday` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `from_date` datetime NOT NULL, `to_date` datetime NOT NULL, `repayments_rescheduled_to` datetime NOT NULL, - `status_enum` int(5) NOT NULL DEFAULT '100', - `processed` tinyint(1) NOT NULL DEFAULT '0', + `status_enum` INT NOT NULL DEFAULT '100', + `processed` tinyint NOT NULL DEFAULT '0', `description` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `holiday_name` (`name`,`from_date`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_holiday: ~0 rows (approximately) /*!40000 ALTER TABLE `m_holiday` DISABLE KEYS */; @@ -1962,14 +1962,14 @@ CREATE TABLE IF NOT EXISTS `m_holiday` ( -- Dumping structure for table fineract_default.m_holiday_office DROP TABLE IF EXISTS `m_holiday_office`; CREATE TABLE IF NOT EXISTS `m_holiday_office` ( - `holiday_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `holiday_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, PRIMARY KEY (`holiday_id`,`office_id`), KEY `m_holiday_id_ibfk_1` (`holiday_id`), KEY `m_office_id_ibfk_2` (`office_id`), CONSTRAINT `m_holiday_id_ibfk_1` FOREIGN KEY (`holiday_id`) REFERENCES `m_holiday` (`id`), CONSTRAINT `m_office_id_ibfk_2` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_holiday_office: ~0 rows (approximately) /*!40000 ALTER TABLE `m_holiday_office` DISABLE KEYS */; @@ -1979,21 +1979,21 @@ CREATE TABLE IF NOT EXISTS `m_holiday_office` ( -- Dumping structure for table fineract_default.m_hook DROP TABLE IF EXISTS `m_hook`; CREATE TABLE IF NOT EXISTS `m_hook` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `template_id` smallint(6) NOT NULL, - `is_active` smallint(3) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `template_id` SMALLINT NOT NULL, + `is_active` SMALLINT NOT NULL DEFAULT '1', `name` varchar(45) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `ugd_template_id` bigint(20) DEFAULT NULL, + `ugd_template_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_template_id_idx` (`template_id`), KEY `fk_ugd_template_id` (`ugd_template_id`), CONSTRAINT `fk_template_id` FOREIGN KEY (`template_id`) REFERENCES `m_hook_templates` (`id`), CONSTRAINT `fk_ugd_template_id` FOREIGN KEY (`ugd_template_id`) REFERENCES `m_template` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_hook: ~0 rows (approximately) /*!40000 ALTER TABLE `m_hook` DISABLE KEYS */; @@ -2003,15 +2003,15 @@ CREATE TABLE IF NOT EXISTS `m_hook` ( -- Dumping structure for table fineract_default.m_hook_configuration DROP TABLE IF EXISTS `m_hook_configuration`; CREATE TABLE IF NOT EXISTS `m_hook_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `hook_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `hook_id` BIGINT DEFAULT NULL, `field_type` varchar(45) NOT NULL, `field_name` varchar(100) NOT NULL, `field_value` varchar(100) NOT NULL, PRIMARY KEY (`id`), KEY `fk_hook_id_idx` (`hook_id`), CONSTRAINT `fk_hook_id_cfg` FOREIGN KEY (`hook_id`) REFERENCES `m_hook` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_hook_configuration: ~0 rows (approximately) /*!40000 ALTER TABLE `m_hook_configuration` DISABLE KEYS */; @@ -2021,14 +2021,14 @@ CREATE TABLE IF NOT EXISTS `m_hook_configuration` ( -- Dumping structure for table fineract_default.m_hook_registered_events DROP TABLE IF EXISTS `m_hook_registered_events`; CREATE TABLE IF NOT EXISTS `m_hook_registered_events` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `hook_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `hook_id` BIGINT NOT NULL, `entity_name` varchar(45) NOT NULL, `action_name` varchar(45) NOT NULL, PRIMARY KEY (`id`), KEY `fk_hook_id_idx` (`hook_id`), CONSTRAINT `fk_hook_idc` FOREIGN KEY (`hook_id`) REFERENCES `m_hook` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_hook_registered_events: ~0 rows (approximately) /*!40000 ALTER TABLE `m_hook_registered_events` DISABLE KEYS */; @@ -2038,16 +2038,16 @@ CREATE TABLE IF NOT EXISTS `m_hook_registered_events` ( -- Dumping structure for table fineract_default.m_hook_schema DROP TABLE IF EXISTS `m_hook_schema`; CREATE TABLE IF NOT EXISTS `m_hook_schema` ( - `id` smallint(6) NOT NULL AUTO_INCREMENT, - `hook_template_id` smallint(6) NOT NULL, + `id` SMALLINT NOT NULL AUTO_INCREMENT, + `hook_template_id` SMALLINT NOT NULL, `field_type` varchar(45) NOT NULL, `field_name` varchar(100) NOT NULL, `placeholder` varchar(100) DEFAULT NULL, - `optional` tinyint(3) NOT NULL DEFAULT '0', + `optional` TINYINT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `fk_hook_template_id_idx` (`hook_template_id`), CONSTRAINT `fk_hook_template_id` FOREIGN KEY (`hook_template_id`) REFERENCES `m_hook_templates` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_hook_schema: ~7 rows (approximately) /*!40000 ALTER TABLE `m_hook_schema` DISABLE KEYS */; @@ -2065,10 +2065,10 @@ INSERT INTO `m_hook_schema` (`id`, `hook_template_id`, `field_type`, `field_name -- Dumping structure for table fineract_default.m_hook_templates DROP TABLE IF EXISTS `m_hook_templates`; CREATE TABLE IF NOT EXISTS `m_hook_templates` ( - `id` smallint(6) NOT NULL AUTO_INCREMENT, + `id` SMALLINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_hook_templates: ~2 rows (approximately) /*!40000 ALTER TABLE `m_hook_templates` DISABLE KEYS */; @@ -2081,11 +2081,11 @@ INSERT INTO `m_hook_templates` (`id`, `name`) VALUES -- Dumping structure for table fineract_default.m_image DROP TABLE IF EXISTS `m_image`; CREATE TABLE IF NOT EXISTS `m_image` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `location` varchar(500) DEFAULT NULL, - `storage_type_enum` smallint(5) DEFAULT NULL, + `storage_type_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_image: ~0 rows (approximately) /*!40000 ALTER TABLE `m_image` DISABLE KEYS */; @@ -2095,18 +2095,18 @@ CREATE TABLE IF NOT EXISTS `m_image` ( -- Dumping structure for table fineract_default.m_interest_incentives DROP TABLE IF EXISTS `m_interest_incentives`; CREATE TABLE IF NOT EXISTS `m_interest_incentives` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `interest_rate_slab_id` bigint(20) NOT NULL, - `entiry_type` smallint(2) NOT NULL, - `attribute_name` smallint(2) NOT NULL, - `condition_type` smallint(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `interest_rate_slab_id` BIGINT NOT NULL, + `entiry_type` SMALLINT NOT NULL, + `attribute_name` SMALLINT NOT NULL, + `condition_type` SMALLINT NOT NULL, `attribute_value` varchar(50) NOT NULL, - `incentive_type` smallint(2) NOT NULL, + `incentive_type` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_interest_incentives_m_interest_rate_slab` (`interest_rate_slab_id`), CONSTRAINT `FK_m_interest_incentives_m_interest_rate_slab` FOREIGN KEY (`interest_rate_slab_id`) REFERENCES `m_interest_rate_slab` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_interest_incentives: ~0 rows (approximately) /*!40000 ALTER TABLE `m_interest_incentives` DISABLE KEYS */; @@ -2116,14 +2116,14 @@ CREATE TABLE IF NOT EXISTS `m_interest_incentives` ( -- Dumping structure for table fineract_default.m_interest_rate_chart DROP TABLE IF EXISTS `m_interest_rate_chart`; CREATE TABLE IF NOT EXISTS `m_interest_rate_chart` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `description` varchar(200) DEFAULT NULL, `from_date` date NOT NULL, `end_date` date DEFAULT NULL, - `is_primary_grouping_by_amount` tinyint(1) NOT NULL DEFAULT '0', + `is_primary_grouping_by_amount` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_interest_rate_chart: ~0 rows (approximately) /*!40000 ALTER TABLE `m_interest_rate_chart` DISABLE KEYS */; @@ -2133,12 +2133,12 @@ CREATE TABLE IF NOT EXISTS `m_interest_rate_chart` ( -- Dumping structure for table fineract_default.m_interest_rate_slab DROP TABLE IF EXISTS `m_interest_rate_slab`; CREATE TABLE IF NOT EXISTS `m_interest_rate_slab` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `interest_rate_chart_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `interest_rate_chart_id` BIGINT NOT NULL, `description` varchar(200) DEFAULT NULL, - `period_type_enum` smallint(5) DEFAULT NULL, - `from_period` int(11) DEFAULT NULL, - `to_period` int(11) DEFAULT NULL, + `period_type_enum` SMALLINT DEFAULT NULL, + `from_period` INT DEFAULT NULL, + `to_period` INT DEFAULT NULL, `amount_range_from` decimal(19,6) DEFAULT NULL, `amount_range_to` decimal(19,6) DEFAULT NULL, `annual_interest_rate` decimal(19,6) NOT NULL, @@ -2146,7 +2146,7 @@ CREATE TABLE IF NOT EXISTS `m_interest_rate_slab` ( PRIMARY KEY (`id`), KEY `FKIRS00000000000001` (`interest_rate_chart_id`), CONSTRAINT `FKIRS00000000000001` FOREIGN KEY (`interest_rate_chart_id`) REFERENCES `m_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_interest_rate_slab: ~0 rows (approximately) /*!40000 ALTER TABLE `m_interest_rate_slab` DISABLE KEYS */; @@ -2156,20 +2156,20 @@ CREATE TABLE IF NOT EXISTS `m_interest_rate_slab` ( -- Dumping structure for table fineract_default.m_loan DROP TABLE IF EXISTS `m_loan`; CREATE TABLE IF NOT EXISTS `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, - `loan_type_enum` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, + `loan_type_enum` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `principal_amount_proposed` decimal(19,6) NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `approved_principal` decimal(19,6) NOT NULL, @@ -2177,34 +2177,34 @@ CREATE TABLE IF NOT EXISTS `m_loan` ( `is_floating_interest_rate` bit(1) DEFAULT b'0', `interest_rate_differential` decimal(19,6) DEFAULT '0.000000', `nominal_interest_rate_per_period` decimal(19,6) DEFAULT NULL, - `interest_period_frequency_enum` smallint(5) DEFAULT NULL, + `interest_period_frequency_enum` SMALLINT DEFAULT NULL, `annual_nominal_interest_rate` decimal(19,6) DEFAULT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `allow_partial_period_interest_calcualtion` tinyint(1) NOT NULL DEFAULT '0', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `grace_on_principal_periods` smallint(5) DEFAULT NULL, - `recurring_moratorium_principal_periods` smallint(5) DEFAULT NULL, - `grace_on_interest_periods` smallint(5) DEFAULT NULL, - `grace_interest_free_periods` smallint(5) DEFAULT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `allow_partial_period_interest_calcualtion` tinyint NOT NULL DEFAULT '0', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `grace_on_principal_periods` SMALLINT DEFAULT NULL, + `recurring_moratorium_principal_periods` SMALLINT DEFAULT NULL, + `grace_on_interest_periods` SMALLINT DEFAULT NULL, + `grace_interest_free_periods` SMALLINT DEFAULT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -2234,32 +2234,32 @@ CREATE TABLE IF NOT EXISTS `m_loan` ( `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_overpaid_derived` decimal(19,6) DEFAULT NULL, `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, - `rescheduledon_userid` bigint(20) DEFAULT NULL, + `rescheduledon_userid` BIGINT DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, - `sync_disbursement_with_meeting` tinyint(1) DEFAULT NULL, - `loan_counter` smallint(6) DEFAULT NULL, - `loan_product_counter` smallint(6) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, + `sync_disbursement_with_meeting` tinyint DEFAULT NULL, + `loan_counter` SMALLINT DEFAULT NULL, + `loan_product_counter` SMALLINT DEFAULT NULL, `fixed_emi_amount` decimal(19,6) DEFAULT NULL, `max_outstanding_loan_balance` decimal(19,6) DEFAULT NULL, - `grace_on_arrears_ageing` smallint(5) DEFAULT NULL, - `is_npa` tinyint(1) NOT NULL DEFAULT '0', + `grace_on_arrears_ageing` SMALLINT DEFAULT NULL, + `is_npa` tinyint NOT NULL DEFAULT '0', `total_recovered_derived` decimal(19,6) DEFAULT NULL, `accrued_till` date DEFAULT NULL, `interest_recalcualated_on` date DEFAULT NULL, - `days_in_month_enum` smallint(5) NOT NULL DEFAULT '1', - `days_in_year_enum` smallint(5) NOT NULL DEFAULT '1', - `interest_recalculation_enabled` tinyint(4) NOT NULL DEFAULT '0', + `days_in_month_enum` SMALLINT NOT NULL DEFAULT '1', + `days_in_year_enum` SMALLINT NOT NULL DEFAULT '1', + `interest_recalculation_enabled` TINYINT NOT NULL DEFAULT '0', `guarantee_amount_derived` decimal(19,6) DEFAULT NULL, - `create_standing_instruction_at_disbursement` tinyint(1) DEFAULT NULL, - `version` int(15) NOT NULL DEFAULT '1', - `writeoff_reason_cv_id` int(11) DEFAULT NULL, - `loan_sub_status_id` smallint(5) DEFAULT NULL, - `is_topup` tinyint(1) NOT NULL DEFAULT '0', + `create_standing_instruction_at_disbursement` tinyint DEFAULT NULL, + `version` INT NOT NULL DEFAULT '1', + `writeoff_reason_cv_id` INT DEFAULT NULL, + `loan_sub_status_id` SMALLINT DEFAULT NULL, + `is_topup` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -2292,7 +2292,7 @@ CREATE TABLE IF NOT EXISTS `m_loan` ( CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_writeoffreason_m_loan_m_code_value` FOREIGN KEY (`writeoff_reason_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan` DISABLE KEYS */; @@ -2302,17 +2302,17 @@ CREATE TABLE IF NOT EXISTS `m_loan` ( -- Dumping structure for table fineract_default.m_loanproduct_provisioning_entry DROP TABLE IF EXISTS `m_loanproduct_provisioning_entry`; CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `history_id` bigint(20) NOT NULL, - `criteria_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `history_id` BIGINT NOT NULL, + `criteria_id` BIGINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `office_id` bigint(20) NOT NULL, - `product_id` bigint(20) NOT NULL, - `category_id` bigint(20) NOT NULL, - `overdue_in_days` bigint(20) DEFAULT '0', + `office_id` BIGINT NOT NULL, + `product_id` BIGINT NOT NULL, + `category_id` BIGINT NOT NULL, + `overdue_in_days` BIGINT DEFAULT '0', `reseve_amount` decimal(20,6) DEFAULT '0.000000', - `liability_account` bigint(20) DEFAULT NULL, - `expense_account` bigint(20) DEFAULT NULL, + `liability_account` BIGINT DEFAULT NULL, + `expense_account` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `history_id` (`history_id`), KEY `criteria_id` (`criteria_id`), @@ -2330,7 +2330,7 @@ CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_entry` ( CONSTRAINT `m_loanproduct_provisioning_entry_ibfk_6` FOREIGN KEY (`category_id`) REFERENCES `m_provision_category` (`id`), CONSTRAINT `m_loanproduct_provisioning_entry_ibfk_7` FOREIGN KEY (`liability_account`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `m_loanproduct_provisioning_entry_ibfk_8` FOREIGN KEY (`expense_account`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loanproduct_provisioning_entry: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loanproduct_provisioning_entry` DISABLE KEYS */; @@ -2340,15 +2340,15 @@ CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_entry` ( -- Dumping structure for table fineract_default.m_loanproduct_provisioning_mapping DROP TABLE IF EXISTS `m_loanproduct_provisioning_mapping`; CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, - `criteria_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `criteria_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `product_id` (`product_id`), KEY `criteria_id` (`criteria_id`), CONSTRAINT `m_loanproduct_provisioning_mapping_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`), CONSTRAINT `m_loanproduct_provisioning_mapping_ibfk_2` FOREIGN KEY (`criteria_id`) REFERENCES `m_provisioning_criteria` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loanproduct_provisioning_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loanproduct_provisioning_mapping` DISABLE KEYS */; @@ -2358,7 +2358,7 @@ CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_mapping` ( -- Dumping structure for table fineract_default.m_loan_arrears_aging DROP TABLE IF EXISTS `m_loan_arrears_aging`; CREATE TABLE IF NOT EXISTS `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -2367,7 +2367,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_arrears_aging: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_arrears_aging` DISABLE KEYS */; @@ -2377,14 +2377,14 @@ CREATE TABLE IF NOT EXISTS `m_loan_arrears_aging` ( -- Dumping structure for table fineract_default.m_loan_charge DROP TABLE IF EXISTS `m_loan_charge`; CREATE TABLE IF NOT EXISTS `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, - `charge_payment_mode_enum` smallint(5) NOT NULL DEFAULT '0', + `charge_calculation_enum` SMALLINT NOT NULL, + `charge_payment_mode_enum` SMALLINT NOT NULL DEFAULT '0', `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `charge_amount_or_percentage` decimal(19,6) DEFAULT NULL, @@ -2393,17 +2393,17 @@ CREATE TABLE IF NOT EXISTS `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', `min_cap` decimal(19,6) DEFAULT NULL, `max_cap` decimal(19,6) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_charge` DISABLE KEYS */; @@ -2413,17 +2413,17 @@ CREATE TABLE IF NOT EXISTS `m_loan_charge` ( -- Dumping structure for table fineract_default.m_loan_charge_paid_by DROP TABLE IF EXISTS `m_loan_charge_paid_by`; CREATE TABLE IF NOT EXISTS `m_loan_charge_paid_by` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_transaction_id` bigint(20) NOT NULL, - `loan_charge_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_transaction_id` BIGINT NOT NULL, + `loan_charge_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `installment_number` smallint(5) DEFAULT NULL, + `installment_number` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK__m_loan_transaction` (`loan_transaction_id`), KEY `FK__m_loan_charge` (`loan_charge_id`), CONSTRAINT `FK__m_loan_charge` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK__m_loan_transaction` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_charge_paid_by: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_charge_paid_by` DISABLE KEYS */; @@ -2433,9 +2433,9 @@ CREATE TABLE IF NOT EXISTS `m_loan_charge_paid_by` ( -- Dumping structure for table fineract_default.m_loan_collateral DROP TABLE IF EXISTS `m_loan_collateral`; CREATE TABLE IF NOT EXISTS `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `value` decimal(19,6) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), @@ -2443,7 +2443,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_collateral` ( KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_collateral: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_collateral` DISABLE KEYS */; @@ -2453,15 +2453,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_collateral` ( -- Dumping structure for table fineract_default.m_loan_disbursement_detail DROP TABLE IF EXISTS `m_loan_disbursement_detail`; CREATE TABLE IF NOT EXISTS `m_loan_disbursement_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `expected_disburse_date` datetime NOT NULL, `disbursedon_date` datetime DEFAULT NULL, `principal` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_loan_disbursement_detail_loan_id` (`loan_id`), CONSTRAINT `FK_loan_disbursement_detail_loan_id` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_disbursement_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_disbursement_detail` DISABLE KEYS */; @@ -2471,24 +2471,24 @@ CREATE TABLE IF NOT EXISTS `m_loan_disbursement_detail` ( -- Dumping structure for table fineract_default.m_loan_installment_charge DROP TABLE IF EXISTS `m_loan_installment_charge`; CREATE TABLE IF NOT EXISTS `m_loan_installment_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` bigint(20) NOT NULL, - `loan_schedule_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `loan_schedule_id` BIGINT NOT NULL, `due_date` date DEFAULT NULL, `amount` decimal(19,6) NOT NULL, `amount_paid_derived` decimal(19,6) DEFAULT NULL, `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', `amount_through_charge_payment` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_loan_charge_id_charge_schedule` (`loan_charge_id`), KEY `FK_loan_schedule_id_charge_schedule` (`loan_schedule_id`), CONSTRAINT `FK_loan_charge_id_charge_schedule` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK_loan_schedule_id_charge_schedule` FOREIGN KEY (`loan_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_installment_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_installment_charge` DISABLE KEYS */; @@ -2498,14 +2498,14 @@ CREATE TABLE IF NOT EXISTS `m_loan_installment_charge` ( -- Dumping structure for table fineract_default.m_loan_interest_recalculation_additional_details DROP TABLE IF EXISTS `m_loan_interest_recalculation_additional_details`; CREATE TABLE IF NOT EXISTS `m_loan_interest_recalculation_additional_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_repayment_schedule_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_repayment_schedule_id` BIGINT NOT NULL, `effective_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_additional_details_repayment_schedule_id` (`loan_repayment_schedule_id`), CONSTRAINT `FK_additional_details_repayment_schedule_id` FOREIGN KEY (`loan_repayment_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_interest_recalculation_additional_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_interest_recalculation_additional_details` DISABLE KEYS */; @@ -2515,21 +2515,21 @@ CREATE TABLE IF NOT EXISTS `m_loan_interest_recalculation_additional_details` ( -- Dumping structure for table fineract_default.m_loan_officer_assignment_history DROP TABLE IF EXISTS `m_loan_officer_assignment_history`; CREATE TABLE IF NOT EXISTS `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_officer_assignment_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_officer_assignment_history` DISABLE KEYS */; @@ -2539,16 +2539,16 @@ CREATE TABLE IF NOT EXISTS `m_loan_officer_assignment_history` ( -- Dumping structure for table fineract_default.m_loan_overdue_installment_charge DROP TABLE IF EXISTS `m_loan_overdue_installment_charge`; CREATE TABLE IF NOT EXISTS `m_loan_overdue_installment_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` bigint(20) NOT NULL, - `loan_schedule_id` bigint(20) NOT NULL, - `frequency_number` int(10) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `loan_schedule_id` BIGINT NOT NULL, + `frequency_number` INT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_loan_overdue_installment_charge_m_loan_charge` (`loan_charge_id`), KEY `FK_m_loan_overdue_installment_charge_m_loan_repayment_schedule` (`loan_schedule_id`), CONSTRAINT `FK_m_loan_overdue_installment_charge_m_loan_charge` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK_m_loan_overdue_installment_charge_m_loan_repayment_schedule` FOREIGN KEY (`loan_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_overdue_installment_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_overdue_installment_charge` DISABLE KEYS */; @@ -2558,7 +2558,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_overdue_installment_charge` ( -- Dumping structure for table fineract_default.m_loan_paid_in_advance DROP TABLE IF EXISTS `m_loan_paid_in_advance`; CREATE TABLE IF NOT EXISTS `m_loan_paid_in_advance` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `principal_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -2566,7 +2566,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_paid_in_advance` ( `total_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_paid_in_advance_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_paid_in_advance: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_paid_in_advance` DISABLE KEYS */; @@ -2576,22 +2576,22 @@ CREATE TABLE IF NOT EXISTS `m_loan_paid_in_advance` ( -- Dumping structure for table fineract_default.m_loan_recalculation_details DROP TABLE IF EXISTS `m_loan_recalculation_details`; CREATE TABLE IF NOT EXISTS `m_loan_recalculation_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `compound_type_enum` smallint(5) NOT NULL, - `reschedule_strategy_enum` smallint(5) NOT NULL, - `rest_frequency_type_enum` smallint(1) NOT NULL, - `rest_frequency_interval` smallint(3) NOT NULL DEFAULT '0', - `compounding_frequency_type_enum` smallint(1) DEFAULT NULL, - `compounding_frequency_interval` smallint(3) DEFAULT NULL, - `rest_frequency_nth_day_enum` int(5) DEFAULT NULL, - `rest_frequency_on_day` int(5) DEFAULT NULL, - `rest_frequency_weekday_enum` int(5) DEFAULT NULL, - `compounding_frequency_nth_day_enum` int(5) DEFAULT NULL, - `compounding_frequency_on_day` int(5) DEFAULT NULL, - `is_compounding_to_be_posted_as_transaction` tinyint(1) NOT NULL DEFAULT '0', - `compounding_frequency_weekday_enum` int(5) DEFAULT NULL, - `allow_compounding_on_eod` tinyint(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `compound_type_enum` SMALLINT NOT NULL, + `reschedule_strategy_enum` SMALLINT NOT NULL, + `rest_frequency_type_enum` SMALLINT NOT NULL, + `rest_frequency_interval` SMALLINT NOT NULL DEFAULT '0', + `compounding_frequency_type_enum` SMALLINT DEFAULT NULL, + `compounding_frequency_interval` SMALLINT DEFAULT NULL, + `rest_frequency_nth_day_enum` INT DEFAULT NULL, + `rest_frequency_on_day` INT DEFAULT NULL, + `rest_frequency_weekday_enum` INT DEFAULT NULL, + `compounding_frequency_nth_day_enum` INT DEFAULT NULL, + `compounding_frequency_on_day` INT DEFAULT NULL, + `is_compounding_to_be_posted_as_transaction` tinyint NOT NULL DEFAULT '0', + `compounding_frequency_weekday_enum` INT DEFAULT NULL, + `allow_compounding_on_eod` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FK_m_loan_m_loan_recalculation_details` (`loan_id`), CONSTRAINT `FK_m_loan_m_loan_recalculation_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) @@ -2605,11 +2605,11 @@ CREATE TABLE IF NOT EXISTS `m_loan_recalculation_details` ( -- Dumping structure for table fineract_default.m_loan_repayment_schedule DROP TABLE IF EXISTS `m_loan_repayment_schedule`; CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -2632,15 +2632,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule` ( `total_paid_late_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, `obligations_met_on_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, - `recalculated_interest_component` tinyint(1) NOT NULL DEFAULT '0', + `lastmodifiedby_id` BIGINT DEFAULT NULL, + `recalculated_interest_component` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_repayment_schedule: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_repayment_schedule` DISABLE KEYS */; @@ -2650,27 +2650,27 @@ CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule` ( -- Dumping structure for table fineract_default.m_loan_repayment_schedule_history DROP TABLE IF EXISTS `m_loan_repayment_schedule_history`; CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_reschedule_request_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_reschedule_request_id` BIGINT DEFAULT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `interest_amount` decimal(19,6) DEFAULT NULL, `fee_charges_amount` decimal(19,6) DEFAULT NULL, `penalty_charges_amount` decimal(19,6) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, - `version` int(5) NOT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, + `version` INT NOT NULL, PRIMARY KEY (`id`), KEY `loan_id` (`loan_id`), KEY `loan_reschedule_request_id` (`loan_reschedule_request_id`), CONSTRAINT `m_loan_repayment_schedule_history_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `m_loan_repayment_schedule_history_ibfk_2` FOREIGN KEY (`loan_reschedule_request_id`) REFERENCES `m_loan_reschedule_request` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_repayment_schedule_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_repayment_schedule_history` DISABLE KEYS */; @@ -2680,20 +2680,20 @@ CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule_history` ( -- Dumping structure for table fineract_default.m_loan_reschedule_request DROP TABLE IF EXISTS `m_loan_reschedule_request`; CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `status_enum` smallint(5) NOT NULL, - `reschedule_from_installment` smallint(5) NOT NULL COMMENT 'Rescheduling will start from this installment', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `status_enum` SMALLINT NOT NULL, + `reschedule_from_installment` SMALLINT NOT NULL COMMENT 'Rescheduling will start from this installment', `reschedule_from_date` date NOT NULL COMMENT 'Rescheduling will start from the installment with due date similar to this date.', - `recalculate_interest` tinyint(1) DEFAULT NULL COMMENT 'If set to 1, interest will be recalculated starting from the reschedule period.', - `reschedule_reason_cv_id` int(11) DEFAULT NULL COMMENT 'ID of code value of reason for rescheduling', + `recalculate_interest` tinyint DEFAULT NULL COMMENT 'If set to 1, interest will be recalculated starting from the reschedule period.', + `reschedule_reason_cv_id` INT DEFAULT NULL COMMENT 'ID of code value of reason for rescheduling', `reschedule_reason_comment` varchar(500) DEFAULT NULL COMMENT 'Text provided in addition to the reason code value', `submitted_on_date` date NOT NULL, - `submitted_by_user_id` bigint(20) NOT NULL, + `submitted_by_user_id` BIGINT NOT NULL, `approved_on_date` date DEFAULT NULL, - `approved_by_user_id` bigint(20) DEFAULT NULL, + `approved_by_user_id` BIGINT DEFAULT NULL, `rejected_on_date` date DEFAULT NULL, - `rejected_by_user_id` bigint(20) DEFAULT NULL, + `rejected_by_user_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `loan_id` (`loan_id`), KEY `reschedule_reason_cv_id` (`reschedule_reason_cv_id`), @@ -2705,7 +2705,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request` ( CONSTRAINT `m_loan_reschedule_request_ibfk_3` FOREIGN KEY (`submitted_by_user_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_reschedule_request_ibfk_4` FOREIGN KEY (`approved_by_user_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_reschedule_request_ibfk_5` FOREIGN KEY (`rejected_by_user_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_reschedule_request: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_reschedule_request` DISABLE KEYS */; @@ -2715,15 +2715,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request` ( -- Dumping structure for table fineract_default.m_loan_reschedule_request_term_variations_mapping DROP TABLE IF EXISTS `m_loan_reschedule_request_term_variations_mapping`; CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request_term_variations_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_reschedule_request_id` bigint(20) NOT NULL, - `loan_term_variations_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_reschedule_request_id` BIGINT NOT NULL, + `loan_term_variations_id` BIGINT NOT NULL, PRIMARY KEY (`id`), KEY `FK__m_loan_reschedule_request` (`loan_reschedule_request_id`), KEY `FK__m_loan_term_variations` (`loan_term_variations_id`), CONSTRAINT `FK__m_loan_reschedule_request` FOREIGN KEY (`loan_reschedule_request_id`) REFERENCES `m_loan_reschedule_request` (`id`), CONSTRAINT `FK__m_loan_term_variations` FOREIGN KEY (`loan_term_variations_id`) REFERENCES `m_loan_term_variations` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_reschedule_request_term_variations_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_reschedule_request_term_variations_mapping` DISABLE KEYS */; @@ -2733,20 +2733,20 @@ CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request_term_variations_mapping` ( -- Dumping structure for table fineract_default.m_loan_term_variations DROP TABLE IF EXISTS `m_loan_term_variations`; CREATE TABLE IF NOT EXISTS `m_loan_term_variations` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `term_type` smallint(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `term_type` SMALLINT NOT NULL, `applicable_date` date NOT NULL, `decimal_value` decimal(19,6) DEFAULT NULL, `date_value` date DEFAULT NULL, - `is_specific_to_installment` tinyint(4) NOT NULL DEFAULT '0', - `applied_on_loan_status` smallint(5) NOT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', - `parent_id` bigint(20) DEFAULT NULL, + `is_specific_to_installment` TINYINT NOT NULL DEFAULT '0', + `applied_on_loan_status` SMALLINT NOT NULL, + `is_active` tinyint NOT NULL DEFAULT '1', + `parent_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_loan_id_m_loan_id` (`loan_id`), CONSTRAINT `FK_loan_id_m_loan_id` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_term_variations: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_term_variations` DISABLE KEYS */; @@ -2756,10 +2756,10 @@ CREATE TABLE IF NOT EXISTS `m_loan_term_variations` ( -- Dumping structure for table fineract_default.m_loan_topup DROP TABLE IF EXISTS `m_loan_topup`; CREATE TABLE IF NOT EXISTS `m_loan_topup` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `closure_loan_id` bigint(20) NOT NULL, - `account_transfer_details_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `closure_loan_id` BIGINT NOT NULL, + `account_transfer_details_id` BIGINT DEFAULT NULL, `topup_amount` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `m_loan_topup_FK_loan_id` (`loan_id`), @@ -2768,7 +2768,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_topup` ( CONSTRAINT `m_loan_topup_FK_account_transfer_details_id` FOREIGN KEY (`account_transfer_details_id`) REFERENCES `m_account_transfer_details` (`id`), CONSTRAINT `m_loan_topup_FK_closure_loan_id` FOREIGN KEY (`closure_loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `m_loan_topup_FK_loan_id` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_topup: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_topup` DISABLE KEYS */; @@ -2778,15 +2778,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_topup` ( -- Dumping structure for table fineract_default.m_loan_tranche_charges DROP TABLE IF EXISTS `m_loan_tranche_charges`; CREATE TABLE IF NOT EXISTS `m_loan_tranche_charges` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_loan_tranche_charges_m_loan` (`loan_id`), KEY `FK_m_loan_tranche_charges_m_charge` (`charge_id`), CONSTRAINT `FK_m_loan_tranche_charges_m_charge` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `FK_m_loan_tranche_charges_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_tranche_charges: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_tranche_charges` DISABLE KEYS */; @@ -2796,15 +2796,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_tranche_charges` ( -- Dumping structure for table fineract_default.m_loan_tranche_disbursement_charge DROP TABLE IF EXISTS `m_loan_tranche_disbursement_charge`; CREATE TABLE IF NOT EXISTS `m_loan_tranche_disbursement_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` bigint(20) NOT NULL, - `disbursement_detail_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `disbursement_detail_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_loan_tranche_disbursement_charge_m_loan_charge` (`loan_charge_id`), KEY `FK_m_loan_tranche_disbursement_charge_m_loan_disbursement_detail` (`disbursement_detail_id`), CONSTRAINT `FK_m_loan_tranche_disbursement_charge_m_loan_charge` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK_m_loan_tranche_disbursement_charge_m_loan_disbursement_detail` FOREIGN KEY (`disbursement_detail_id`) REFERENCES `m_loan_disbursement_detail` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_tranche_disbursement_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_tranche_disbursement_charge` DISABLE KEYS */; @@ -2814,13 +2814,13 @@ CREATE TABLE IF NOT EXISTS `m_loan_tranche_disbursement_charge` ( -- Dumping structure for table fineract_default.m_loan_transaction DROP TABLE IF EXISTS `m_loan_transaction`; CREATE TABLE IF NOT EXISTS `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `payment_detail_id` bigint(20) DEFAULT NULL, - `is_reversed` tinyint(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `payment_detail_id` BIGINT DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -2831,9 +2831,9 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction` ( `unrecognized_income_portion` decimal(19,6) DEFAULT NULL, `outstanding_loan_balance_derived` decimal(19,6) DEFAULT NULL, `submitted_on_date` date NOT NULL, - `manually_adjusted_or_reversed` tinyint(1) DEFAULT '0', + `manually_adjusted_or_reversed` tinyint DEFAULT '0', `created_date` datetime DEFAULT NULL, - `appuser_id` bigint(20) DEFAULT NULL, + `appuser_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `external_id_UNIQUE` (`external_id`), KEY `FKCFCEA42640BE0710` (`loan_id`), @@ -2842,7 +2842,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction` ( CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_m_loan_transaction_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK_m_loan_transaction_m_payment_detail` FOREIGN KEY (`payment_detail_id`) REFERENCES `m_payment_detail` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_transaction` DISABLE KEYS */; @@ -2852,9 +2852,9 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction` ( -- Dumping structure for table fineract_default.m_loan_transaction_repayment_schedule_mapping DROP TABLE IF EXISTS `m_loan_transaction_repayment_schedule_mapping`; CREATE TABLE IF NOT EXISTS `m_loan_transaction_repayment_schedule_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_transaction_id` bigint(20) NOT NULL, - `loan_repayment_schedule_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_transaction_id` BIGINT NOT NULL, + `loan_repayment_schedule_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, `interest_portion_derived` decimal(19,6) DEFAULT NULL, @@ -2865,7 +2865,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction_repayment_schedule_mapping` ( KEY `FK_mappings_m_loan_repayment_schedule` (`loan_repayment_schedule_id`), CONSTRAINT `FK_mappings_m_loan_repayment_schedule` FOREIGN KEY (`loan_repayment_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`), CONSTRAINT `FK_mappings_m_loan_transaction` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_loan_transaction_repayment_schedule_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_transaction_repayment_schedule_mapping` DISABLE KEYS */; @@ -2875,25 +2875,25 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction_repayment_schedule_mapping` ( -- Dumping structure for table fineract_default.m_mandatory_savings_schedule DROP TABLE IF EXISTS `m_mandatory_savings_schedule`; CREATE TABLE IF NOT EXISTS `m_mandatory_savings_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `deposit_amount` decimal(19,6) DEFAULT NULL, `deposit_amount_completed_derived` decimal(19,6) DEFAULT NULL, `total_paid_in_advance_derived` decimal(19,6) DEFAULT NULL, `total_paid_late_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, `obligations_met_on_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKMSS0000000001` (`savings_account_id`), CONSTRAINT `FKMSS0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_mandatory_savings_schedule: ~0 rows (approximately) /*!40000 ALTER TABLE `m_mandatory_savings_schedule` DISABLE KEYS */; @@ -2903,8 +2903,8 @@ CREATE TABLE IF NOT EXISTS `m_mandatory_savings_schedule` ( -- Dumping structure for table fineract_default.m_meeting DROP TABLE IF EXISTS `m_meeting`; CREATE TABLE IF NOT EXISTS `m_meeting` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_instance_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_instance_id` BIGINT NOT NULL, `meeting_date` date NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_calendar_instance_id_meeting_date` (`calendar_instance_id`,`meeting_date`), @@ -2919,20 +2919,20 @@ CREATE TABLE IF NOT EXISTS `m_meeting` ( -- Dumping structure for table fineract_default.m_note DROP TABLE IF EXISTS `m_note`; CREATE TABLE IF NOT EXISTS `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, - `savings_account_transaction_id` bigint(20) DEFAULT NULL, - `share_account_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, + `savings_account_transaction_id` BIGINT DEFAULT NULL, + `share_account_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -2948,7 +2948,7 @@ CREATE TABLE IF NOT EXISTS `m_note` ( CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_savings_account_id` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_note: ~0 rows (approximately) /*!40000 ALTER TABLE `m_note` DISABLE KEYS */; @@ -2958,8 +2958,8 @@ CREATE TABLE IF NOT EXISTS `m_note` ( -- Dumping structure for table fineract_default.m_office DROP TABLE IF EXISTS `m_office`; CREATE TABLE IF NOT EXISTS `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -2969,7 +2969,7 @@ CREATE TABLE IF NOT EXISTS `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_office: ~0 rows (approximately) /*!40000 ALTER TABLE `m_office` DISABLE KEYS */; @@ -2981,11 +2981,11 @@ INSERT INTO `m_office` (`id`, `parent_id`, `hierarchy`, `external_id`, `name`, ` -- Dumping structure for table fineract_default.m_office_transaction DROP TABLE IF EXISTS `m_office_transaction`; CREATE TABLE IF NOT EXISTS `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -2994,7 +2994,7 @@ CREATE TABLE IF NOT EXISTS `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_office_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_office_transaction` DISABLE KEYS */; @@ -3004,15 +3004,15 @@ CREATE TABLE IF NOT EXISTS `m_office_transaction` ( -- Dumping structure for table fineract_default.m_organisation_currency DROP TABLE IF EXISTS `m_organisation_currency`; CREATE TABLE IF NOT EXISTS `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `decimal_places` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_organisation_currency: ~0 rows (approximately) /*!40000 ALTER TABLE `m_organisation_currency` DISABLE KEYS */; @@ -3024,13 +3024,13 @@ INSERT INTO `m_organisation_currency` (`id`, `code`, `decimal_places`, `currency -- Dumping structure for table fineract_default.m_password_validation_policy DROP TABLE IF EXISTS `m_password_validation_policy`; CREATE TABLE IF NOT EXISTS `m_password_validation_policy` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `regex` text NOT NULL, `description` text NOT NULL, - `active` tinyint(4) NOT NULL DEFAULT '0', + `active` TINYINT NOT NULL DEFAULT '0', `key` varchar(255) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_password_validation_policy: ~2 rows (approximately) /*!40000 ALTER TABLE `m_password_validation_policy` DISABLE KEYS */; @@ -3043,8 +3043,8 @@ INSERT INTO `m_password_validation_policy` (`id`, `regex`, `description`, `activ -- Dumping structure for table fineract_default.m_payment_detail DROP TABLE IF EXISTS `m_payment_detail`; CREATE TABLE IF NOT EXISTS `m_payment_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `payment_type_id` int(11) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `payment_type_id` INT DEFAULT NULL, `account_number` varchar(100) DEFAULT NULL, `check_number` varchar(100) DEFAULT NULL, `receipt_number` varchar(100) DEFAULT NULL, @@ -3053,7 +3053,7 @@ CREATE TABLE IF NOT EXISTS `m_payment_detail` ( PRIMARY KEY (`id`), KEY `FK_m_payment_detail_m_payment_type` (`payment_type_id`), CONSTRAINT `FK_m_payment_detail_m_payment_type` FOREIGN KEY (`payment_type_id`) REFERENCES `m_payment_type` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_payment_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `m_payment_detail` DISABLE KEYS */; @@ -3063,13 +3063,13 @@ CREATE TABLE IF NOT EXISTS `m_payment_detail` ( -- Dumping structure for table fineract_default.m_payment_type DROP TABLE IF EXISTS `m_payment_type`; CREATE TABLE IF NOT EXISTS `m_payment_type` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `value` varchar(100) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, - `is_cash_payment` tinyint(1) DEFAULT '0', - `order_position` int(11) NOT NULL DEFAULT '0', + `is_cash_payment` tinyint DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_payment_type: ~0 rows (approximately) /*!40000 ALTER TABLE `m_payment_type` DISABLE KEYS */; @@ -3079,15 +3079,15 @@ CREATE TABLE IF NOT EXISTS `m_payment_type` ( -- Dumping structure for table fineract_default.m_permission DROP TABLE IF EXISTS `m_permission`; CREATE TABLE IF NOT EXISTS `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=767 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=767 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_permission: ~744 rows (approximately) /*!40000 ALTER TABLE `m_permission` DISABLE KEYS */; @@ -3842,13 +3842,13 @@ INSERT INTO `m_permission` (`id`, `grouping`, `code`, `entity_name`, `action_nam -- Dumping structure for table fineract_default.m_portfolio_account_associations DROP TABLE IF EXISTS `m_portfolio_account_associations`; CREATE TABLE IF NOT EXISTS `m_portfolio_account_associations` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_account_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, - `linked_loan_account_id` bigint(20) DEFAULT NULL, - `linked_savings_account_id` bigint(20) DEFAULT NULL, - `association_type_enum` smallint(1) NOT NULL DEFAULT '1', - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_account_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, + `linked_loan_account_id` BIGINT DEFAULT NULL, + `linked_savings_account_id` BIGINT DEFAULT NULL, + `association_type_enum` SMALLINT NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `account_association_loan_fk` (`loan_account_id`), KEY `account_association_savings_fk` (`savings_account_id`), @@ -3858,7 +3858,7 @@ CREATE TABLE IF NOT EXISTS `m_portfolio_account_associations` ( CONSTRAINT `account_association_savings_fk` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`), CONSTRAINT `linked_loan_fk` FOREIGN KEY (`linked_loan_account_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `linked_savings_fk` FOREIGN KEY (`linked_savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_portfolio_account_associations: ~0 rows (approximately) /*!40000 ALTER TABLE `m_portfolio_account_associations` DISABLE KEYS */; @@ -3868,24 +3868,24 @@ CREATE TABLE IF NOT EXISTS `m_portfolio_account_associations` ( -- Dumping structure for table fineract_default.m_portfolio_command_source DROP TABLE IF EXISTS `m_portfolio_command_source`; CREATE TABLE IF NOT EXISTS `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, - `product_id` bigint(20) DEFAULT NULL, + `processing_result_enum` SMALLINT NOT NULL, + `product_id` BIGINT DEFAULT NULL, `transaction_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), @@ -3901,7 +3901,7 @@ CREATE TABLE IF NOT EXISTS `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_portfolio_command_source: ~0 rows (approximately) /*!40000 ALTER TABLE `m_portfolio_command_source` DISABLE KEYS */; @@ -3911,61 +3911,61 @@ CREATE TABLE IF NOT EXISTS `m_portfolio_command_source` ( -- Dumping structure for table fineract_default.m_product_loan DROP TABLE IF EXISTS `m_product_loan`; CREATE TABLE IF NOT EXISTS `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `short_name` varchar(4) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `min_principal_amount` decimal(19,6) DEFAULT NULL, `max_principal_amount` decimal(19,6) DEFAULT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `is_linked_to_floating_interest_rates` bit(1) NOT NULL DEFAULT b'0', `allow_variabe_installments` bit(1) NOT NULL DEFAULT b'0', `nominal_interest_rate_per_period` decimal(19,6) DEFAULT NULL, `min_nominal_interest_rate_per_period` decimal(19,6) DEFAULT NULL, `max_nominal_interest_rate_per_period` decimal(19,6) DEFAULT NULL, - `interest_period_frequency_enum` smallint(5) DEFAULT NULL, + `interest_period_frequency_enum` SMALLINT DEFAULT NULL, `annual_nominal_interest_rate` decimal(19,6) DEFAULT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `allow_partial_period_interest_calcualtion` tinyint(1) NOT NULL DEFAULT '0', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `min_number_of_repayments` smallint(5) DEFAULT NULL, - `max_number_of_repayments` smallint(5) DEFAULT NULL, - `grace_on_principal_periods` smallint(5) DEFAULT NULL, - `recurring_moratorium_principal_periods` smallint(5) DEFAULT NULL, - `grace_on_interest_periods` smallint(5) DEFAULT NULL, - `grace_interest_free_periods` smallint(5) DEFAULT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `allow_partial_period_interest_calcualtion` tinyint NOT NULL DEFAULT '0', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `min_number_of_repayments` SMALLINT DEFAULT NULL, + `max_number_of_repayments` SMALLINT DEFAULT NULL, + `grace_on_principal_periods` SMALLINT DEFAULT NULL, + `recurring_moratorium_principal_periods` SMALLINT DEFAULT NULL, + `grace_on_interest_periods` SMALLINT DEFAULT NULL, + `grace_interest_free_periods` SMALLINT DEFAULT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, - `include_in_borrower_cycle` tinyint(1) NOT NULL DEFAULT '0', - `use_borrower_cycle` tinyint(1) NOT NULL DEFAULT '0', + `include_in_borrower_cycle` tinyint NOT NULL DEFAULT '0', + `use_borrower_cycle` tinyint NOT NULL DEFAULT '0', `start_date` date DEFAULT NULL, `close_date` date DEFAULT NULL, - `allow_multiple_disbursals` tinyint(1) NOT NULL DEFAULT '0', - `max_disbursals` int(2) DEFAULT NULL, + `allow_multiple_disbursals` tinyint NOT NULL DEFAULT '0', + `max_disbursals` INT DEFAULT NULL, `max_outstanding_loan_balance` decimal(19,6) DEFAULT NULL, - `grace_on_arrears_ageing` smallint(5) DEFAULT NULL, - `overdue_days_for_npa` smallint(5) DEFAULT NULL, - `days_in_month_enum` smallint(5) NOT NULL DEFAULT '1', - `days_in_year_enum` smallint(5) NOT NULL DEFAULT '1', - `interest_recalculation_enabled` tinyint(4) NOT NULL DEFAULT '0', - `min_days_between_disbursal_and_first_repayment` int(3) DEFAULT NULL, - `hold_guarantee_funds` tinyint(1) NOT NULL DEFAULT '0', + `grace_on_arrears_ageing` SMALLINT DEFAULT NULL, + `overdue_days_for_npa` SMALLINT DEFAULT NULL, + `days_in_month_enum` SMALLINT NOT NULL DEFAULT '1', + `days_in_year_enum` SMALLINT NOT NULL DEFAULT '1', + `interest_recalculation_enabled` TINYINT NOT NULL DEFAULT '0', + `min_days_between_disbursal_and_first_repayment` INT DEFAULT NULL, + `hold_guarantee_funds` tinyint NOT NULL DEFAULT '0', `principal_threshold_for_last_installment` decimal(5,2) NOT NULL DEFAULT '50.00', - `account_moves_out_of_npa_only_on_arrears_completion` tinyint(1) NOT NULL DEFAULT '0', - `can_define_fixed_emi_amount` tinyint(1) NOT NULL DEFAULT '0', + `account_moves_out_of_npa_only_on_arrears_completion` tinyint NOT NULL DEFAULT '0', + `can_define_fixed_emi_amount` tinyint NOT NULL DEFAULT '0', `instalment_amount_in_multiples_of` decimal(19,6) DEFAULT NULL, - `can_use_for_topup` tinyint(1) NOT NULL DEFAULT '0', - `sync_expected_with_disbursement_date` tinyint(4) DEFAULT '0', + `can_use_for_topup` tinyint NOT NULL DEFAULT '0', + `sync_expected_with_disbursement_date` TINYINT DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), UNIQUE KEY `unq_short_name` (`short_name`), @@ -3974,7 +3974,7 @@ CREATE TABLE IF NOT EXISTS `m_product_loan` ( KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_product_loan: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan` DISABLE KEYS */; @@ -3984,13 +3984,13 @@ CREATE TABLE IF NOT EXISTS `m_product_loan` ( -- Dumping structure for table fineract_default.m_product_loan_charge DROP TABLE IF EXISTS `m_product_loan_charge`; CREATE TABLE IF NOT EXISTS `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_product_loan_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_charge` DISABLE KEYS */; @@ -4000,20 +4000,20 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_charge` ( -- Dumping structure for table fineract_default.m_product_loan_configurable_attributes DROP TABLE IF EXISTS `m_product_loan_configurable_attributes`; CREATE TABLE IF NOT EXISTS `m_product_loan_configurable_attributes` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL, - `amortization_method_enum` tinyint(4) NOT NULL DEFAULT '1', - `interest_method_enum` tinyint(4) NOT NULL DEFAULT '1', - `loan_transaction_strategy_id` tinyint(4) NOT NULL DEFAULT '1', - `interest_calculated_in_period_enum` tinyint(4) NOT NULL DEFAULT '1', - `arrearstolerance_amount` tinyint(4) NOT NULL DEFAULT '1', - `repay_every` tinyint(4) NOT NULL DEFAULT '1', - `moratorium` tinyint(4) NOT NULL DEFAULT '1', - `grace_on_arrears_ageing` tinyint(4) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, + `amortization_method_enum` TINYINT NOT NULL DEFAULT '1', + `interest_method_enum` TINYINT NOT NULL DEFAULT '1', + `loan_transaction_strategy_id` TINYINT NOT NULL DEFAULT '1', + `interest_calculated_in_period_enum` TINYINT NOT NULL DEFAULT '1', + `arrearstolerance_amount` TINYINT NOT NULL DEFAULT '1', + `repay_every` TINYINT NOT NULL DEFAULT '1', + `moratorium` TINYINT NOT NULL DEFAULT '1', + `grace_on_arrears_ageing` TINYINT NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `fk_m_product_loan_configurable_attributes_0001` (`loan_product_id`), CONSTRAINT `fk_m_product_loan_configurable_attributes_0001` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_product_loan_configurable_attributes: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_configurable_attributes` DISABLE KEYS */; @@ -4023,9 +4023,9 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_configurable_attributes` ( -- Dumping structure for table fineract_default.m_product_loan_floating_rates DROP TABLE IF EXISTS `m_product_loan_floating_rates`; CREATE TABLE IF NOT EXISTS `m_product_loan_floating_rates` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL, - `floating_rates_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, + `floating_rates_id` BIGINT NOT NULL, `interest_rate_differential` decimal(19,6) NOT NULL DEFAULT '0.000000', `min_differential_lending_rate` decimal(19,6) NOT NULL DEFAULT '0.000000', `default_differential_lending_rate` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -4036,7 +4036,7 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_floating_rates` ( KEY `FK_mappings_m_floating_rates_id` (`floating_rates_id`), CONSTRAINT `FK_mappings_m_floating_rates_id` FOREIGN KEY (`floating_rates_id`) REFERENCES `m_floating_rates` (`id`), CONSTRAINT `FK_mappings_m_product_loan_id` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_product_loan_floating_rates: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_floating_rates` DISABLE KEYS */; @@ -4046,15 +4046,15 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_floating_rates` ( -- Dumping structure for table fineract_default.m_product_loan_guarantee_details DROP TABLE IF EXISTS `m_product_loan_guarantee_details`; CREATE TABLE IF NOT EXISTS `m_product_loan_guarantee_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, `mandatory_guarantee` decimal(19,5) NOT NULL, `minimum_guarantee_from_own_funds` decimal(19,5) DEFAULT NULL, `minimum_guarantee_from_guarantor_funds` decimal(19,5) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_guarantee_details_loan_product` (`loan_product_id`), CONSTRAINT `FK_guarantee_details_loan_product` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_product_loan_guarantee_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_guarantee_details` DISABLE KEYS */; @@ -4064,24 +4064,24 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_guarantee_details` ( -- Dumping structure for table fineract_default.m_product_loan_recalculation_details DROP TABLE IF EXISTS `m_product_loan_recalculation_details`; CREATE TABLE IF NOT EXISTS `m_product_loan_recalculation_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, - `compound_type_enum` smallint(5) NOT NULL, - `reschedule_strategy_enum` smallint(5) NOT NULL, - `rest_frequency_type_enum` smallint(1) NOT NULL, - `rest_frequency_interval` smallint(3) NOT NULL DEFAULT '0', - `arrears_based_on_original_schedule` tinyint(1) NOT NULL DEFAULT '0', - `pre_close_interest_calculation_strategy` smallint(3) NOT NULL DEFAULT '1', - `compounding_frequency_type_enum` smallint(1) DEFAULT NULL, - `compounding_frequency_interval` smallint(3) DEFAULT NULL, - `rest_frequency_nth_day_enum` int(5) DEFAULT NULL, - `rest_frequency_on_day` int(5) DEFAULT NULL, - `rest_frequency_weekday_enum` int(5) DEFAULT NULL, - `compounding_frequency_nth_day_enum` int(5) DEFAULT NULL, - `compounding_frequency_on_day` int(5) DEFAULT NULL, - `compounding_frequency_weekday_enum` int(5) DEFAULT NULL, - `is_compounding_to_be_posted_as_transaction` tinyint(1) NOT NULL DEFAULT '0', - `allow_compounding_on_eod` tinyint(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `compound_type_enum` SMALLINT NOT NULL, + `reschedule_strategy_enum` SMALLINT NOT NULL, + `rest_frequency_type_enum` SMALLINT NOT NULL, + `rest_frequency_interval` SMALLINT NOT NULL DEFAULT '0', + `arrears_based_on_original_schedule` tinyint NOT NULL DEFAULT '0', + `pre_close_interest_calculation_strategy` SMALLINT NOT NULL DEFAULT '1', + `compounding_frequency_type_enum` SMALLINT DEFAULT NULL, + `compounding_frequency_interval` SMALLINT DEFAULT NULL, + `rest_frequency_nth_day_enum` INT DEFAULT NULL, + `rest_frequency_on_day` INT DEFAULT NULL, + `rest_frequency_weekday_enum` INT DEFAULT NULL, + `compounding_frequency_nth_day_enum` INT DEFAULT NULL, + `compounding_frequency_on_day` INT DEFAULT NULL, + `compounding_frequency_weekday_enum` INT DEFAULT NULL, + `is_compounding_to_be_posted_as_transaction` tinyint NOT NULL DEFAULT '0', + `allow_compounding_on_eod` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FK_m_product_loan_m_product_loan_recalculation_details` (`product_id`), CONSTRAINT `FK_m_product_loan_m_product_loan_recalculation_details` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`) @@ -4095,14 +4095,14 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_recalculation_details` ( -- Dumping structure for table fineract_default.m_product_loan_variable_installment_config DROP TABLE IF EXISTS `m_product_loan_variable_installment_config`; CREATE TABLE IF NOT EXISTS `m_product_loan_variable_installment_config` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL, - `minimum_gap` int(4) NOT NULL, - `maximum_gap` int(4) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, + `minimum_gap` INT NOT NULL, + `maximum_gap` INT NOT NULL, PRIMARY KEY (`id`), KEY `FK_mappings_m_variable_product_loan_id` (`loan_product_id`), CONSTRAINT `FK_mappings_m_variable_product_loan_id` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_product_loan_variable_installment_config: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_variable_installment_config` DISABLE KEYS */; @@ -4112,18 +4112,18 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_variable_installment_config` ( -- Dumping structure for table fineract_default.m_product_loan_variations_borrower_cycle DROP TABLE IF EXISTS `m_product_loan_variations_borrower_cycle`; CREATE TABLE IF NOT EXISTS `m_product_loan_variations_borrower_cycle` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL DEFAULT '0', - `borrower_cycle_number` int(3) NOT NULL DEFAULT '0', - `value_condition` int(1) NOT NULL DEFAULT '0', - `param_type` int(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL DEFAULT '0', + `borrower_cycle_number` INT NOT NULL DEFAULT '0', + `value_condition` INT NOT NULL DEFAULT '0', + `param_type` INT NOT NULL DEFAULT '0', `default_value` decimal(19,6) NOT NULL DEFAULT '0.000000', `max_value` decimal(19,6) DEFAULT NULL, `min_value` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `borrower_cycle_loan_product_FK` (`loan_product_id`), CONSTRAINT `borrower_cycle_loan_product_FK` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_product_loan_variations_borrower_cycle: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_variations_borrower_cycle` DISABLE KEYS */; @@ -4133,15 +4133,15 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_variations_borrower_cycle` ( -- Dumping structure for table fineract_default.m_product_mix DROP TABLE IF EXISTS `m_product_mix`; CREATE TABLE IF NOT EXISTS `m_product_mix` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, - `restricted_product_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `restricted_product_id` BIGINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_product_mix_product_id_to_m_product_loan` (`product_id`), KEY `FK_m_product_mix_restricted_product_id_to_m_product_loan` (`restricted_product_id`), CONSTRAINT `FK_m_product_mix_product_id_to_m_product_loan` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`), CONSTRAINT `FK_m_product_mix_restricted_product_id_to_m_product_loan` FOREIGN KEY (`restricted_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_product_mix: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_mix` DISABLE KEYS */; @@ -4151,11 +4151,11 @@ CREATE TABLE IF NOT EXISTS `m_product_mix` ( -- Dumping structure for table fineract_default.m_provisioning_criteria DROP TABLE IF EXISTS `m_provisioning_criteria`; CREATE TABLE IF NOT EXISTS `m_provisioning_criteria` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `criteria_name` varchar(200) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `criteria_name` (`criteria_name`), @@ -4163,7 +4163,7 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_criteria` ( KEY `lastmodifiedby_id` (`lastmodifiedby_id`), CONSTRAINT `m_provisioning_criteria_ibfk_1` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_provisioning_criteria_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_provisioning_criteria: ~0 rows (approximately) /*!40000 ALTER TABLE `m_provisioning_criteria` DISABLE KEYS */; @@ -4173,14 +4173,14 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_criteria` ( -- Dumping structure for table fineract_default.m_provisioning_criteria_definition DROP TABLE IF EXISTS `m_provisioning_criteria_definition`; CREATE TABLE IF NOT EXISTS `m_provisioning_criteria_definition` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `criteria_id` bigint(20) NOT NULL, - `category_id` bigint(20) NOT NULL, - `min_age` bigint(20) NOT NULL, - `max_age` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `criteria_id` BIGINT NOT NULL, + `category_id` BIGINT NOT NULL, + `min_age` BIGINT NOT NULL, + `max_age` BIGINT NOT NULL, `provision_percentage` decimal(5,2) NOT NULL, - `liability_account` bigint(20) DEFAULT NULL, - `expense_account` bigint(20) DEFAULT NULL, + `liability_account` BIGINT DEFAULT NULL, + `expense_account` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `criteria_id` (`criteria_id`), KEY `category_id` (`category_id`), @@ -4190,7 +4190,7 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_criteria_definition` ( CONSTRAINT `m_provisioning_criteria_definition_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `m_provision_category` (`id`), CONSTRAINT `m_provisioning_criteria_definition_ibfk_3` FOREIGN KEY (`liability_account`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `m_provisioning_criteria_definition_ibfk_4` FOREIGN KEY (`expense_account`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_provisioning_criteria_definition: ~0 rows (approximately) /*!40000 ALTER TABLE `m_provisioning_criteria_definition` DISABLE KEYS */; @@ -4200,18 +4200,18 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_criteria_definition` ( -- Dumping structure for table fineract_default.m_provisioning_history DROP TABLE IF EXISTS `m_provisioning_history`; CREATE TABLE IF NOT EXISTS `m_provisioning_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `journal_entry_created` bit(1) DEFAULT b'0', - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` date DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `createdby_id` (`createdby_id`), KEY `lastmodifiedby_id` (`lastmodifiedby_id`), CONSTRAINT `m_provisioning_history_ibfk_1` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_provisioning_history_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_provisioning_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_provisioning_history` DISABLE KEYS */; @@ -4221,12 +4221,12 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_history` ( -- Dumping structure for table fineract_default.m_provision_category DROP TABLE IF EXISTS `m_provision_category`; CREATE TABLE IF NOT EXISTS `m_provision_category` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `category_name` varchar(100) NOT NULL, `description` varchar(300) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `category_name` (`category_name`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_provision_category: ~4 rows (approximately) /*!40000 ALTER TABLE `m_provision_category` DISABLE KEYS */; @@ -4241,30 +4241,30 @@ INSERT INTO `m_provision_category` (`id`, `category_name`, `description`) VALUES -- Dumping structure for table fineract_default.m_report_mailing_job DROP TABLE IF EXISTS `m_report_mailing_job`; CREATE TABLE IF NOT EXISTS `m_report_mailing_job` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` text, `start_datetime` datetime NOT NULL, `recurrence` varchar(100) DEFAULT NULL, `created_date` date NOT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `lastmodified_date` date DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `email_recipients` text NOT NULL, `email_subject` varchar(100) NOT NULL, `email_message` text NOT NULL, `email_attachment_file_format` varchar(10) NOT NULL, - `stretchy_report_id` int(11) NOT NULL, + `stretchy_report_id` INT NOT NULL, `stretchy_report_param_map` text, `previous_run_datetime` datetime DEFAULT NULL, `next_run_datetime` datetime DEFAULT NULL, `previous_run_status` varchar(10) DEFAULT NULL, `previous_run_error_log` text, `previous_run_error_message` text, - `number_of_runs` int(11) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL DEFAULT '0', - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `run_as_userid` bigint(20) NOT NULL, + `number_of_runs` INT NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', + `run_as_userid` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_name` (`name`), KEY `createdby_id` (`createdby_id`), @@ -4275,7 +4275,7 @@ CREATE TABLE IF NOT EXISTS `m_report_mailing_job` ( CONSTRAINT `m_report_mailing_job_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_report_mailing_job_ibfk_3` FOREIGN KEY (`stretchy_report_id`) REFERENCES `stretchy_report` (`id`), CONSTRAINT `m_report_mailing_job_ibfk_4` FOREIGN KEY (`run_as_userid`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_report_mailing_job: ~0 rows (approximately) /*!40000 ALTER TABLE `m_report_mailing_job` DISABLE KEYS */; @@ -4285,12 +4285,12 @@ CREATE TABLE IF NOT EXISTS `m_report_mailing_job` ( -- Dumping structure for table fineract_default.m_report_mailing_job_configuration DROP TABLE IF EXISTS `m_report_mailing_job_configuration`; CREATE TABLE IF NOT EXISTS `m_report_mailing_job_configuration` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `value` varchar(200) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_report_mailing_job_configuration: ~4 rows (approximately) /*!40000 ALTER TABLE `m_report_mailing_job_configuration` DISABLE KEYS */; @@ -4305,8 +4305,8 @@ INSERT INTO `m_report_mailing_job_configuration` (`id`, `name`, `value`) VALUES -- Dumping structure for table fineract_default.m_report_mailing_job_run_history DROP TABLE IF EXISTS `m_report_mailing_job_run_history`; CREATE TABLE IF NOT EXISTS `m_report_mailing_job_run_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `job_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `job_id` BIGINT NOT NULL, `start_datetime` datetime NOT NULL, `end_datetime` datetime NOT NULL, `status` varchar(10) NOT NULL, @@ -4315,7 +4315,7 @@ CREATE TABLE IF NOT EXISTS `m_report_mailing_job_run_history` ( PRIMARY KEY (`id`), KEY `job_id` (`job_id`), CONSTRAINT `m_report_mailing_job_run_history_ibfk_1` FOREIGN KEY (`job_id`) REFERENCES `m_report_mailing_job` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_report_mailing_job_run_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_report_mailing_job_run_history` DISABLE KEYS */; @@ -4325,13 +4325,13 @@ CREATE TABLE IF NOT EXISTS `m_report_mailing_job_run_history` ( -- Dumping structure for table fineract_default.m_role DROP TABLE IF EXISTS `m_role`; CREATE TABLE IF NOT EXISTS `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, - `is_disabled` tinyint(1) NOT NULL DEFAULT '0', + `is_disabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_role: ~0 rows (approximately) /*!40000 ALTER TABLE `m_role` DISABLE KEYS */; @@ -4343,14 +4343,14 @@ INSERT INTO `m_role` (`id`, `name`, `description`, `is_disabled`) VALUES -- Dumping structure for table fineract_default.m_role_permission DROP TABLE IF EXISTS `m_role_permission`; CREATE TABLE IF NOT EXISTS `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_role_permission: ~0 rows (approximately) /*!40000 ALTER TABLE `m_role_permission` DISABLE KEYS */; @@ -4362,42 +4362,42 @@ INSERT INTO `m_role_permission` (`role_id`, `permission_id`) VALUES -- Dumping structure for table fineract_default.m_savings_account DROP TABLE IF EXISTS `m_savings_account`; CREATE TABLE IF NOT EXISTS `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `field_officer_id` bigint(20) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', - `sub_status_enum` smallint(5) NOT NULL DEFAULT '0', - `account_type_enum` smallint(5) NOT NULL DEFAULT '1', - `deposit_type_enum` smallint(5) NOT NULL DEFAULT '100', + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `field_officer_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', + `sub_status_enum` SMALLINT NOT NULL DEFAULT '0', + `account_type_enum` SMALLINT NOT NULL DEFAULT '1', + `deposit_type_enum` SMALLINT NOT NULL DEFAULT '100', `submittedon_date` date NOT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `activatedon_date` date DEFAULT NULL, - `activatedon_userid` bigint(20) DEFAULT NULL, + `activatedon_userid` BIGINT DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `nominal_annual_interest_rate` decimal(19,6) NOT NULL, - `interest_compounding_period_enum` smallint(5) NOT NULL, - `interest_posting_period_enum` smallint(5) NOT NULL DEFAULT '4', - `interest_calculation_type_enum` smallint(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` smallint(5) NOT NULL, + `interest_compounding_period_enum` SMALLINT NOT NULL, + `interest_posting_period_enum` SMALLINT NOT NULL DEFAULT '4', + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, - `withdrawal_fee_for_transfer` tinyint(4) DEFAULT '1', - `allow_overdraft` tinyint(1) NOT NULL DEFAULT '0', + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, + `withdrawal_fee_for_transfer` TINYINT DEFAULT '1', + `allow_overdraft` tinyint NOT NULL DEFAULT '0', `overdraft_limit` decimal(19,6) DEFAULT NULL, `nominal_annual_interest_rate_overdraft` decimal(19,6) DEFAULT '0.000000', `min_overdraft_for_interest_calculation` decimal(19,6) DEFAULT '0.000000', @@ -4414,13 +4414,13 @@ CREATE TABLE IF NOT EXISTS `m_savings_account` ( `total_withhold_tax_derived` decimal(19,6) DEFAULT NULL, `account_balance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `min_required_balance` decimal(19,6) DEFAULT NULL, - `enforce_min_required_balance` tinyint(1) NOT NULL DEFAULT '0', + `enforce_min_required_balance` tinyint NOT NULL DEFAULT '0', `min_balance_for_interest_calculation` decimal(19,6) DEFAULT NULL, `start_interest_calculation_date` date DEFAULT NULL, `on_hold_funds_derived` decimal(19,6) DEFAULT NULL, - `version` int(15) NOT NULL DEFAULT '1', - `withhold_tax` tinyint(4) NOT NULL DEFAULT '0', - `tax_group_id` bigint(20) DEFAULT NULL, + `version` INT NOT NULL DEFAULT '1', + `withhold_tax` TINYINT NOT NULL DEFAULT '0', + `tax_group_id` BIGINT DEFAULT NULL, `last_interest_calculation_date` date DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sa_account_no_UNIQUE` (`account_no`), @@ -4433,7 +4433,7 @@ CREATE TABLE IF NOT EXISTS `m_savings_account` ( CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`), CONSTRAINT `FK_savings_account_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_account: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account` DISABLE KEYS */; @@ -4443,16 +4443,16 @@ CREATE TABLE IF NOT EXISTS `m_savings_account` ( -- Dumping structure for table fineract_default.m_savings_account_charge DROP TABLE IF EXISTS `m_savings_account_charge`; CREATE TABLE IF NOT EXISTS `m_savings_account_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `charge_due_date` date DEFAULT NULL, - `fee_on_month` smallint(5) DEFAULT NULL, - `fee_on_day` smallint(5) DEFAULT NULL, - `fee_interval` smallint(5) DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `fee_on_month` SMALLINT DEFAULT NULL, + `fee_on_day` SMALLINT DEFAULT NULL, + `fee_interval` SMALLINT DEFAULT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -4460,16 +4460,16 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL DEFAULT '1', `inactivated_on_date` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_savings_account_charge_ibfk_2` (`savings_account_id`), CONSTRAINT `m_savings_account_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_savings_account_charge_ibfk_2` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_account_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_charge` DISABLE KEYS */; @@ -4479,16 +4479,16 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_charge` ( -- Dumping structure for table fineract_default.m_savings_account_charge_paid_by DROP TABLE IF EXISTS `m_savings_account_charge_paid_by`; CREATE TABLE IF NOT EXISTS `m_savings_account_charge_paid_by` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_transaction_id` bigint(20) NOT NULL, - `savings_account_charge_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_transaction_id` BIGINT NOT NULL, + `savings_account_charge_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK__m_savings_account_transaction` (`savings_account_transaction_id`), KEY `FK__m_savings_account_charge` (`savings_account_charge_id`), CONSTRAINT `FK__m_savings_account_charge` FOREIGN KEY (`savings_account_charge_id`) REFERENCES `m_savings_account_charge` (`id`), CONSTRAINT `FK__m_savings_account_transaction` FOREIGN KEY (`savings_account_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_account_charge_paid_by: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_charge_paid_by` DISABLE KEYS */; @@ -4498,17 +4498,17 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_charge_paid_by` ( -- Dumping structure for table fineract_default.m_savings_account_interest_rate_chart DROP TABLE IF EXISTS `m_savings_account_interest_rate_chart`; CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_chart` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `name` varchar(100) DEFAULT NULL, `description` varchar(200) DEFAULT NULL, `from_date` date NOT NULL, `end_date` date DEFAULT NULL, - `is_primary_grouping_by_amount` tinyint(4) NOT NULL DEFAULT '0', + `is_primary_grouping_by_amount` TINYINT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FKSAIRC00000000000001` (`savings_account_id`), CONSTRAINT `FKSAIRC00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_account_interest_rate_chart: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_interest_rate_chart` DISABLE KEYS */; @@ -4518,12 +4518,12 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_chart` ( -- Dumping structure for table fineract_default.m_savings_account_interest_rate_slab DROP TABLE IF EXISTS `m_savings_account_interest_rate_slab`; CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_slab` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_interest_rate_chart_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_interest_rate_chart_id` BIGINT NOT NULL, `description` varchar(200) DEFAULT NULL, - `period_type_enum` smallint(5) DEFAULT NULL, - `from_period` int(11) DEFAULT NULL, - `to_period` int(11) DEFAULT NULL, + `period_type_enum` SMALLINT DEFAULT NULL, + `from_period` INT DEFAULT NULL, + `to_period` INT DEFAULT NULL, `amount_range_from` decimal(19,6) DEFAULT NULL, `amount_range_to` decimal(19,6) DEFAULT NULL, `annual_interest_rate` decimal(19,6) NOT NULL, @@ -4531,7 +4531,7 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_slab` ( PRIMARY KEY (`id`), KEY `FKSAIRS00000000000001` (`savings_account_interest_rate_chart_id`), CONSTRAINT `FKSAIRS00000000000001` FOREIGN KEY (`savings_account_interest_rate_chart_id`) REFERENCES `m_savings_account_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_account_interest_rate_slab: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_interest_rate_slab` DISABLE KEYS */; @@ -4541,22 +4541,22 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_slab` ( -- Dumping structure for table fineract_default.m_savings_account_transaction DROP TABLE IF EXISTS `m_savings_account_transaction`; CREATE TABLE IF NOT EXISTS `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `payment_detail_id` bigint(20) DEFAULT NULL, - `transaction_type_enum` smallint(5) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `payment_detail_id` BIGINT DEFAULT NULL, + `transaction_type_enum` SMALLINT NOT NULL, + `is_reversed` tinyint NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `overdraft_amount_derived` decimal(19,6) DEFAULT NULL, `balance_end_date_derived` date DEFAULT NULL, - `balance_number_of_days_derived` int(11) DEFAULT NULL, + `balance_number_of_days_derived` INT DEFAULT NULL, `running_balance_derived` decimal(19,6) DEFAULT NULL, `cumulative_balance_derived` decimal(19,6) DEFAULT NULL, `created_date` datetime NOT NULL, - `appuser_id` bigint(20) DEFAULT NULL, - `is_manual` tinyint(1) DEFAULT '0', + `appuser_id` BIGINT DEFAULT NULL, + `is_manual` tinyint DEFAULT '0', PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), KEY `FK_m_savings_account_transaction_m_payment_detail` (`payment_detail_id`), @@ -4564,7 +4564,7 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_transaction` ( CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`), CONSTRAINT `FK_m_savings_account_transaction_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK_m_savings_account_transaction_m_payment_detail` FOREIGN KEY (`payment_detail_id`) REFERENCES `m_payment_detail` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_account_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_transaction` DISABLE KEYS */; @@ -4574,16 +4574,16 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_transaction` ( -- Dumping structure for table fineract_default.m_savings_account_transaction_tax_details DROP TABLE IF EXISTS `m_savings_account_transaction_tax_details`; CREATE TABLE IF NOT EXISTS `m_savings_account_transaction_tax_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_transaction_id` bigint(20) NOT NULL, - `tax_component_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_transaction_id` BIGINT NOT NULL, + `tax_component_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_savings_account_transaction_tax_details_savings_transaction` (`savings_transaction_id`), KEY `FK_savings_account_transaction_tax_details_tax_component` (`tax_component_id`), CONSTRAINT `FK_savings_account_transaction_tax_details_savings_transaction` FOREIGN KEY (`savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`), CONSTRAINT `FK_savings_account_transaction_tax_details_tax_component` FOREIGN KEY (`tax_component_id`) REFERENCES `m_tax_component` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_account_transaction_tax_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_transaction_tax_details` DISABLE KEYS */; @@ -4593,18 +4593,18 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_transaction_tax_details` ( -- Dumping structure for table fineract_default.m_savings_interest_incentives DROP TABLE IF EXISTS `m_savings_interest_incentives`; CREATE TABLE IF NOT EXISTS `m_savings_interest_incentives` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `deposit_account_interest_rate_slab_id` bigint(20) NOT NULL, - `entiry_type` smallint(2) NOT NULL, - `attribute_name` smallint(2) NOT NULL, - `condition_type` smallint(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `deposit_account_interest_rate_slab_id` BIGINT NOT NULL, + `entiry_type` SMALLINT NOT NULL, + `attribute_name` SMALLINT NOT NULL, + `condition_type` SMALLINT NOT NULL, `attribute_value` varchar(50) NOT NULL, - `incentive_type` smallint(2) NOT NULL, + `incentive_type` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_savings_interest_incentives_m_savings_interest_rate_slab` (`deposit_account_interest_rate_slab_id`), CONSTRAINT `FK_m_savings_interest_incentives_m_savings_interest_rate_slab` FOREIGN KEY (`deposit_account_interest_rate_slab_id`) REFERENCES `m_savings_account_interest_rate_slab` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_interest_incentives: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_interest_incentives` DISABLE KEYS */; @@ -4614,21 +4614,21 @@ CREATE TABLE IF NOT EXISTS `m_savings_interest_incentives` ( -- Dumping structure for table fineract_default.m_savings_officer_assignment_history DROP TABLE IF EXISTS `m_savings_officer_assignment_history`; CREATE TABLE IF NOT EXISTS `m_savings_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `savings_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `savings_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_savings_officer_assignment_history_0001` (`account_id`), KEY `fk_m_savings_officer_assignment_history_0002` (`savings_officer_id`), CONSTRAINT `fk_m_savings_officer_assignment_history_0001` FOREIGN KEY (`account_id`) REFERENCES `m_savings_account` (`id`), CONSTRAINT `fk_m_savings_officer_assignment_history_0002` FOREIGN KEY (`savings_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_officer_assignment_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_officer_assignment_history` DISABLE KEYS */; @@ -4638,45 +4638,45 @@ CREATE TABLE IF NOT EXISTS `m_savings_officer_assignment_history` ( -- Dumping structure for table fineract_default.m_savings_product DROP TABLE IF EXISTS `m_savings_product`; CREATE TABLE IF NOT EXISTS `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `short_name` varchar(4) NOT NULL, `description` varchar(500) NOT NULL, - `deposit_type_enum` smallint(5) NOT NULL DEFAULT '100', + `deposit_type_enum` SMALLINT NOT NULL DEFAULT '100', `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `nominal_annual_interest_rate` decimal(19,6) NOT NULL, - `interest_compounding_period_enum` smallint(5) NOT NULL, - `interest_posting_period_enum` smallint(5) NOT NULL DEFAULT '4', - `interest_calculation_type_enum` smallint(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` smallint(5) NOT NULL, + `interest_compounding_period_enum` SMALLINT NOT NULL, + `interest_posting_period_enum` SMALLINT NOT NULL DEFAULT '4', + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, - `accounting_type` smallint(5) NOT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, + `accounting_type` SMALLINT NOT NULL, `withdrawal_fee_amount` decimal(19,6) DEFAULT NULL, - `withdrawal_fee_type_enum` smallint(5) DEFAULT NULL, - `withdrawal_fee_for_transfer` tinyint(4) DEFAULT '1', - `allow_overdraft` tinyint(1) NOT NULL DEFAULT '0', + `withdrawal_fee_type_enum` SMALLINT DEFAULT NULL, + `withdrawal_fee_for_transfer` TINYINT DEFAULT '1', + `allow_overdraft` tinyint NOT NULL DEFAULT '0', `overdraft_limit` decimal(19,6) DEFAULT NULL, `nominal_annual_interest_rate_overdraft` decimal(19,6) DEFAULT '0.000000', `min_overdraft_for_interest_calculation` decimal(19,6) DEFAULT '0.000000', `min_required_balance` decimal(19,6) DEFAULT NULL, - `enforce_min_required_balance` tinyint(1) NOT NULL DEFAULT '0', + `enforce_min_required_balance` tinyint NOT NULL DEFAULT '0', `min_balance_for_interest_calculation` decimal(19,6) DEFAULT NULL, - `withhold_tax` tinyint(4) NOT NULL DEFAULT '0', - `tax_group_id` bigint(20) DEFAULT NULL, - `is_dormancy_tracking_active` smallint(1) DEFAULT NULL, - `days_to_inactive` int(11) DEFAULT NULL, - `days_to_dormancy` int(11) DEFAULT NULL, - `days_to_escheat` int(11) DEFAULT NULL, + `withhold_tax` TINYINT NOT NULL DEFAULT '0', + `tax_group_id` BIGINT DEFAULT NULL, + `is_dormancy_tracking_active` SMALLINT DEFAULT NULL, + `days_to_inactive` INT DEFAULT NULL, + `days_to_dormancy` INT DEFAULT NULL, + `days_to_escheat` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`), UNIQUE KEY `sp_unq_short_name` (`short_name`), KEY `FK_savings_product_tax_group` (`tax_group_id`), CONSTRAINT `FK_savings_product_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_product: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_product` DISABLE KEYS */; @@ -4686,13 +4686,13 @@ CREATE TABLE IF NOT EXISTS `m_savings_product` ( -- Dumping structure for table fineract_default.m_savings_product_charge DROP TABLE IF EXISTS `m_savings_product_charge`; CREATE TABLE IF NOT EXISTS `m_savings_product_charge` ( - `savings_product_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `savings_product_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`savings_product_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_savings_product_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_savings_product_charge_ibfk_2` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_savings_product_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_product_charge` DISABLE KEYS */; @@ -4702,18 +4702,18 @@ CREATE TABLE IF NOT EXISTS `m_savings_product_charge` ( -- Dumping structure for table fineract_default.m_selfservice_beneficiaries_tpt DROP TABLE IF EXISTS `m_selfservice_beneficiaries_tpt`; CREATE TABLE IF NOT EXISTS `m_selfservice_beneficiaries_tpt` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `app_user_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `app_user_id` BIGINT NOT NULL, `name` varchar(50) NOT NULL, - `office_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, - `account_id` bigint(20) NOT NULL, - `account_type` smallint(4) NOT NULL, - `transfer_limit` bigint(20) DEFAULT '0', + `office_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, + `account_id` BIGINT NOT NULL, + `account_type` SMALLINT NOT NULL, + `transfer_limit` BIGINT DEFAULT '0', `is_active` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`app_user_id`,`is_active`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_selfservice_beneficiaries_tpt: ~0 rows (approximately) /*!40000 ALTER TABLE `m_selfservice_beneficiaries_tpt` DISABLE KEYS */; @@ -4723,15 +4723,15 @@ CREATE TABLE IF NOT EXISTS `m_selfservice_beneficiaries_tpt` ( -- Dumping structure for table fineract_default.m_selfservice_user_client_mapping DROP TABLE IF EXISTS `m_selfservice_user_client_mapping`; CREATE TABLE IF NOT EXISTS `m_selfservice_user_client_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `appuser_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `appuser_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `appuser_id_client_id` (`appuser_id`,`client_id`), KEY `m_selfservice_client_id` (`client_id`), CONSTRAINT `m_selfservice_appuser_id` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_selfservice_client_id` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_selfservice_user_client_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_selfservice_user_client_mapping` DISABLE KEYS */; @@ -4741,35 +4741,35 @@ CREATE TABLE IF NOT EXISTS `m_selfservice_user_client_mapping` ( -- Dumping structure for table fineract_default.m_share_account DROP TABLE IF EXISTS `m_share_account`; CREATE TABLE IF NOT EXISTS `m_share_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(50) NOT NULL, - `product_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `product_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', - `total_approved_shares` bigint(20) DEFAULT NULL, - `total_pending_shares` bigint(20) DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', + `total_approved_shares` BIGINT DEFAULT NULL, + `total_pending_shares` BIGINT DEFAULT NULL, `submitted_date` date NOT NULL, - `submitted_userid` bigint(20) DEFAULT NULL, + `submitted_userid` BIGINT DEFAULT NULL, `approved_date` date DEFAULT NULL, - `approved_userid` bigint(20) DEFAULT NULL, + `approved_userid` BIGINT DEFAULT NULL, `rejected_date` date DEFAULT NULL, - `rejected_userid` bigint(20) DEFAULT NULL, + `rejected_userid` BIGINT DEFAULT NULL, `activated_date` date DEFAULT NULL, - `activated_userid` bigint(20) DEFAULT NULL, + `activated_userid` BIGINT DEFAULT NULL, `closed_date` date DEFAULT NULL, - `closed_userid` bigint(20) DEFAULT NULL, + `closed_userid` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, - `savings_account_id` bigint(20) NOT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, + `savings_account_id` BIGINT NOT NULL, `minimum_active_period_frequency` decimal(19,6) DEFAULT NULL, - `minimum_active_period_frequency_enum` smallint(5) DEFAULT NULL, + `minimum_active_period_frequency_enum` SMALLINT DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, - `allow_dividends_inactive_clients` smallint(1) DEFAULT '0', + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, + `allow_dividends_inactive_clients` SMALLINT DEFAULT '0', `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `m_share_account_ibfk_1` (`product_id`), @@ -4790,7 +4790,7 @@ CREATE TABLE IF NOT EXISTS `m_share_account` ( CONSTRAINT `m_share_account_ibfk_7` FOREIGN KEY (`closed_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_share_account_ibfk_8` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_share_account_ibfk_9` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_account: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account` DISABLE KEYS */; @@ -4800,12 +4800,12 @@ CREATE TABLE IF NOT EXISTS `m_share_account` ( -- Dumping structure for table fineract_default.m_share_account_charge DROP TABLE IF EXISTS `m_share_account_charge`; CREATE TABLE IF NOT EXISTS `m_share_account_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, - `charge_payment_mode_enum` smallint(5) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, + `charge_payment_mode_enum` SMALLINT NOT NULL DEFAULT '0', `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `charge_amount_or_percentage` decimal(19,6) DEFAULT NULL, @@ -4814,17 +4814,17 @@ CREATE TABLE IF NOT EXISTS `m_share_account_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', `min_cap` decimal(19,6) DEFAULT NULL, `max_cap` decimal(19,6) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_share_account_charge_ibfk_2` (`account_id`), CONSTRAINT `m_share_account_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_share_account_charge_ibfk_2` FOREIGN KEY (`account_id`) REFERENCES `m_share_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_account_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account_charge` DISABLE KEYS */; @@ -4834,16 +4834,16 @@ CREATE TABLE IF NOT EXISTS `m_share_account_charge` ( -- Dumping structure for table fineract_default.m_share_account_charge_paid_by DROP TABLE IF EXISTS `m_share_account_charge_paid_by`; CREATE TABLE IF NOT EXISTS `m_share_account_charge_paid_by` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `share_transaction_id` bigint(20) DEFAULT NULL, - `charge_transaction_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `share_transaction_id` BIGINT DEFAULT NULL, + `charge_transaction_id` BIGINT DEFAULT NULL, `amount` decimal(20,2) NOT NULL, PRIMARY KEY (`id`), KEY `m_share_account_transactions_charge_mapping_ibfk1` (`share_transaction_id`), KEY `m_share_account_transactions_charge_mapping_ibfk2` (`charge_transaction_id`), CONSTRAINT `m_share_account_transactions_charge_mapping_ibfk1` FOREIGN KEY (`share_transaction_id`) REFERENCES `m_share_account_transactions` (`id`), CONSTRAINT `m_share_account_transactions_charge_mapping_ibfk2` FOREIGN KEY (`charge_transaction_id`) REFERENCES `m_share_account_charge` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_account_charge_paid_by: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account_charge_paid_by` DISABLE KEYS */; @@ -4853,18 +4853,18 @@ CREATE TABLE IF NOT EXISTS `m_share_account_charge_paid_by` ( -- Dumping structure for table fineract_default.m_share_account_dividend_details DROP TABLE IF EXISTS `m_share_account_dividend_details`; CREATE TABLE IF NOT EXISTS `m_share_account_dividend_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `dividend_pay_out_id` bigint(20) NOT NULL, - `account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `dividend_pay_out_id` BIGINT NOT NULL, + `account_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `status` smallint(3) NOT NULL, - `savings_transaction_id` bigint(20) DEFAULT NULL, + `status` SMALLINT NOT NULL, + `savings_transaction_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_share_account_dividend_details_dividend_pay_out_id` (`dividend_pay_out_id`), KEY `FK_m_share_account_dividend_details_account_id` (`account_id`), CONSTRAINT `FK_m_share_account_dividend_details_account_id` FOREIGN KEY (`account_id`) REFERENCES `m_share_account` (`id`), CONSTRAINT `FK_m_share_account_dividend_details_dividend_pay_out_id` FOREIGN KEY (`dividend_pay_out_id`) REFERENCES `m_share_product_dividend_pay_out` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_account_dividend_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account_dividend_details` DISABLE KEYS */; @@ -4874,21 +4874,21 @@ CREATE TABLE IF NOT EXISTS `m_share_account_dividend_details` ( -- Dumping structure for table fineract_default.m_share_account_transactions DROP TABLE IF EXISTS `m_share_account_transactions`; CREATE TABLE IF NOT EXISTS `m_share_account_transactions` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, `transaction_date` date DEFAULT NULL, - `total_shares` bigint(20) DEFAULT NULL, + `total_shares` BIGINT DEFAULT NULL, `unit_price` decimal(10,2) DEFAULT NULL, `amount` decimal(20,2) DEFAULT NULL, `charge_amount` decimal(20,2) DEFAULT NULL, `amount_paid` decimal(20,2) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', - `type_enum` smallint(5) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `status_enum` SMALLINT NOT NULL DEFAULT '300', + `type_enum` SMALLINT DEFAULT NULL, + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `m_share_account_purchased_shares_ibfk_1` (`account_id`), CONSTRAINT `m_share_account_purchased_shares_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `m_share_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_account_transactions: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account_transactions` DISABLE KEYS */; @@ -4898,7 +4898,7 @@ CREATE TABLE IF NOT EXISTS `m_share_account_transactions` ( -- Dumping structure for table fineract_default.m_share_product DROP TABLE IF EXISTS `m_share_product`; CREATE TABLE IF NOT EXISTS `m_share_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, `short_name` varchar(4) NOT NULL, `external_id` varchar(100) DEFAULT NULL, @@ -4906,33 +4906,33 @@ CREATE TABLE IF NOT EXISTS `m_share_product` ( `start_date` datetime DEFAULT NULL, `end_date` datetime DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, - `total_shares` bigint(20) NOT NULL, - `issued_shares` bigint(20) DEFAULT NULL, - `totalsubscribed_shares` bigint(20) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, + `total_shares` BIGINT NOT NULL, + `issued_shares` BIGINT DEFAULT NULL, + `totalsubscribed_shares` BIGINT DEFAULT NULL, `unit_price` decimal(10,2) NOT NULL, `capital_amount` decimal(20,2) NOT NULL, - `minimum_client_shares` bigint(20) DEFAULT NULL, - `nominal_client_shares` bigint(20) NOT NULL, - `maximum_client_shares` bigint(20) DEFAULT NULL, + `minimum_client_shares` BIGINT DEFAULT NULL, + `nominal_client_shares` BIGINT NOT NULL, + `maximum_client_shares` BIGINT DEFAULT NULL, `minimum_active_period_frequency` decimal(19,6) DEFAULT NULL, - `minimum_active_period_frequency_enum` smallint(5) DEFAULT NULL, + `minimum_active_period_frequency_enum` SMALLINT DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, - `allow_dividends_inactive_clients` smallint(1) DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, + `allow_dividends_inactive_clients` SMALLINT DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `accounting_type` smallint(2) NOT NULL, + `accounting_type` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `m_share_product_ibfk_1` (`createdby_id`), KEY `m_share_product_ibfk_2` (`lastmodifiedby_id`), CONSTRAINT `m_share_product_ibfk_1` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_share_product_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_product: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_product` DISABLE KEYS */; @@ -4942,13 +4942,13 @@ CREATE TABLE IF NOT EXISTS `m_share_product` ( -- Dumping structure for table fineract_default.m_share_product_charge DROP TABLE IF EXISTS `m_share_product_charge`; CREATE TABLE IF NOT EXISTS `m_share_product_charge` ( - `product_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_id`,`charge_id`), KEY `m_share_product_charge_ibfk_1` (`charge_id`), CONSTRAINT `m_share_product_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_share_product_charge_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_product_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_product_charge` DISABLE KEYS */; @@ -4958,15 +4958,15 @@ CREATE TABLE IF NOT EXISTS `m_share_product_charge` ( -- Dumping structure for table fineract_default.m_share_product_dividend_pay_out DROP TABLE IF EXISTS `m_share_product_dividend_pay_out`; CREATE TABLE IF NOT EXISTS `m_share_product_dividend_pay_out` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, `dividend_period_start_date` date NOT NULL, `dividend_period_end_date` date NOT NULL, - `status` smallint(3) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `status` SMALLINT NOT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_share_product_dividend_pay_out_product_id` (`product_id`), @@ -4975,7 +4975,7 @@ CREATE TABLE IF NOT EXISTS `m_share_product_dividend_pay_out` ( CONSTRAINT `FK_m_share_product_dividend_pay_out_createdby_id` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_share_product_dividend_pay_out_lastmodifiedby_id` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_share_product_dividend_pay_out_product_id` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_product_dividend_pay_out: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_product_dividend_pay_out` DISABLE KEYS */; @@ -4985,14 +4985,14 @@ CREATE TABLE IF NOT EXISTS `m_share_product_dividend_pay_out` ( -- Dumping structure for table fineract_default.m_share_product_market_price DROP TABLE IF EXISTS `m_share_product_market_price`; CREATE TABLE IF NOT EXISTS `m_share_product_market_price` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, `from_date` date DEFAULT NULL, `share_value` decimal(10,2) NOT NULL, PRIMARY KEY (`id`), KEY `m_share_product_market_price_ibfk_1` (`product_id`), CONSTRAINT `m_share_product_market_price_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_share_product_market_price: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_product_market_price` DISABLE KEYS */; @@ -5002,19 +5002,19 @@ CREATE TABLE IF NOT EXISTS `m_share_product_market_price` ( -- Dumping structure for table fineract_default.m_staff DROP TABLE IF EXISTS `m_staff`; CREATE TABLE IF NOT EXISTS `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(102) NOT NULL, `mobile_no` varchar(50) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, - `organisational_role_enum` smallint(6) DEFAULT NULL, - `organisational_role_parent_staff_id` bigint(20) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `organisational_role_enum` SMALLINT DEFAULT NULL, + `organisational_role_parent_staff_id` BIGINT DEFAULT NULL, + `is_active` tinyint NOT NULL DEFAULT '1', `joining_date` date DEFAULT NULL, - `image_id` bigint(20) DEFAULT NULL, + `image_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `display_name` (`display_name`), UNIQUE KEY `external_id_UNIQUE` (`external_id`), @@ -5023,7 +5023,7 @@ CREATE TABLE IF NOT EXISTS `m_staff` ( KEY `FK_m_staff_m_image` (`image_id`), CONSTRAINT `FK_m_staff_m_image` FOREIGN KEY (`image_id`) REFERENCES `m_image` (`id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_staff: ~0 rows (approximately) /*!40000 ALTER TABLE `m_staff` DISABLE KEYS */; @@ -5033,21 +5033,21 @@ CREATE TABLE IF NOT EXISTS `m_staff` ( -- Dumping structure for table fineract_default.m_staff_assignment_history DROP TABLE IF EXISTS `m_staff_assignment_history`; CREATE TABLE IF NOT EXISTS `m_staff_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `centre_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `centre_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT NOT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_staff_assignment_history_centre_id_m_group` (`centre_id`), KEY `FK_m_staff_assignment_history_m_staff` (`staff_id`), CONSTRAINT `FK_m_staff_assignment_history_centre_id_m_group` FOREIGN KEY (`centre_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_staff_assignment_history_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_staff_assignment_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_staff_assignment_history` DISABLE KEYS */; @@ -5057,7 +5057,7 @@ CREATE TABLE IF NOT EXISTS `m_staff_assignment_history` ( -- Dumping structure for table fineract_default.m_surveys DROP TABLE IF EXISTS `m_surveys`; CREATE TABLE IF NOT EXISTS `m_surveys` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `a_key` varchar(32) NOT NULL, `a_name` varchar(255) NOT NULL, `description` varchar(4000) DEFAULT NULL, @@ -5065,7 +5065,7 @@ CREATE TABLE IF NOT EXISTS `m_surveys` ( `valid_from` datetime DEFAULT NULL, `valid_to` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_surveys: ~0 rows (approximately) /*!40000 ALTER TABLE `m_surveys` DISABLE KEYS */; @@ -5075,16 +5075,16 @@ CREATE TABLE IF NOT EXISTS `m_surveys` ( -- Dumping structure for table fineract_default.m_survey_components DROP TABLE IF EXISTS `m_survey_components`; CREATE TABLE IF NOT EXISTS `m_survey_components` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `survey_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `a_key` varchar(32) NOT NULL, `a_text` varchar(255) NOT NULL, `description` varchar(4000) DEFAULT NULL, - `sequence_no` int(4) NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), KEY `survey_id` (`survey_id`), CONSTRAINT `m_survey_components_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_survey_components: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_components` DISABLE KEYS */; @@ -5094,17 +5094,17 @@ CREATE TABLE IF NOT EXISTS `m_survey_components` ( -- Dumping structure for table fineract_default.m_survey_lookup_tables DROP TABLE IF EXISTS `m_survey_lookup_tables`; CREATE TABLE IF NOT EXISTS `m_survey_lookup_tables` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `survey_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `a_key` varchar(255) NOT NULL, - `description` int(4) DEFAULT NULL, - `value_from` int(4) NOT NULL, - `value_to` int(4) NOT NULL, + `description` INT DEFAULT NULL, + `value_from` INT NOT NULL, + `value_to` INT NOT NULL, `score` decimal(5,2) NOT NULL, PRIMARY KEY (`id`), KEY `survey_id` (`survey_id`), CONSTRAINT `m_survey_lookup_tables_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_survey_lookup_tables: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_lookup_tables` DISABLE KEYS */; @@ -5114,17 +5114,17 @@ CREATE TABLE IF NOT EXISTS `m_survey_lookup_tables` ( -- Dumping structure for table fineract_default.m_survey_questions DROP TABLE IF EXISTS `m_survey_questions`; CREATE TABLE IF NOT EXISTS `m_survey_questions` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `survey_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `component_key` varchar(32) DEFAULT NULL, `a_key` varchar(32) NOT NULL, `a_text` varchar(255) NOT NULL, `description` varchar(4000) DEFAULT NULL, - `sequence_no` int(4) NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), KEY `survey_id` (`survey_id`), CONSTRAINT `m_survey_questions_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_survey_questions: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_questions` DISABLE KEYS */; @@ -5134,15 +5134,15 @@ CREATE TABLE IF NOT EXISTS `m_survey_questions` ( -- Dumping structure for table fineract_default.m_survey_responses DROP TABLE IF EXISTS `m_survey_responses`; CREATE TABLE IF NOT EXISTS `m_survey_responses` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `question_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `question_id` BIGINT NOT NULL, `a_text` varchar(255) NOT NULL, - `a_value` int(4) NOT NULL, - `sequence_no` int(4) NOT NULL, + `a_value` INT NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), KEY `question_id` (`question_id`), CONSTRAINT `m_survey_responses_ibfk_1` FOREIGN KEY (`question_id`) REFERENCES `m_survey_questions` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_survey_responses: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_responses` DISABLE KEYS */; @@ -5152,14 +5152,14 @@ CREATE TABLE IF NOT EXISTS `m_survey_responses` ( -- Dumping structure for table fineract_default.m_survey_scorecards DROP TABLE IF EXISTS `m_survey_scorecards`; CREATE TABLE IF NOT EXISTS `m_survey_scorecards` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `survey_id` bigint(20) NOT NULL, - `question_id` bigint(20) NOT NULL, - `response_id` bigint(20) NOT NULL, - `user_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, + `question_id` BIGINT NOT NULL, + `response_id` BIGINT NOT NULL, + `user_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, `created_on` datetime DEFAULT NULL, - `a_value` int(4) NOT NULL, + `a_value` INT NOT NULL, PRIMARY KEY (`id`), KEY `survey_id` (`survey_id`), KEY `question_id` (`question_id`), @@ -5171,7 +5171,7 @@ CREATE TABLE IF NOT EXISTS `m_survey_scorecards` ( CONSTRAINT `m_survey_scorecards_ibfk_3` FOREIGN KEY (`response_id`) REFERENCES `m_survey_responses` (`id`), CONSTRAINT `m_survey_scorecards_ibfk_4` FOREIGN KEY (`user_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_survey_scorecards_ibfk_5` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_survey_scorecards: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_scorecards` DISABLE KEYS */; @@ -5181,17 +5181,17 @@ CREATE TABLE IF NOT EXISTS `m_survey_scorecards` ( -- Dumping structure for table fineract_default.m_tax_component DROP TABLE IF EXISTS `m_tax_component`; CREATE TABLE IF NOT EXISTS `m_tax_component` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `percentage` decimal(19,6) NOT NULL, - `debit_account_type_enum` smallint(2) DEFAULT NULL, - `debit_account_id` bigint(20) DEFAULT NULL, - `credit_account_type_enum` smallint(2) DEFAULT NULL, - `credit_account_id` bigint(20) DEFAULT NULL, + `debit_account_type_enum` SMALLINT DEFAULT NULL, + `debit_account_id` BIGINT DEFAULT NULL, + `credit_account_type_enum` SMALLINT DEFAULT NULL, + `credit_account_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_tax_component_debit_gl_account` (`debit_account_id`), @@ -5202,7 +5202,7 @@ CREATE TABLE IF NOT EXISTS `m_tax_component` ( CONSTRAINT `FK_tax_component_credit_gl_account` FOREIGN KEY (`credit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_tax_component_debit_gl_account` FOREIGN KEY (`debit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_tax_component_lastmodifiedby` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_tax_component: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tax_component` DISABLE KEYS */; @@ -5212,14 +5212,14 @@ CREATE TABLE IF NOT EXISTS `m_tax_component` ( -- Dumping structure for table fineract_default.m_tax_component_history DROP TABLE IF EXISTS `m_tax_component_history`; CREATE TABLE IF NOT EXISTS `m_tax_component_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `tax_component_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `tax_component_id` BIGINT NOT NULL, `percentage` decimal(19,6) NOT NULL, `start_date` date NOT NULL, `end_date` date NOT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_tax_component_history_tax_component_id` (`tax_component_id`), @@ -5228,7 +5228,7 @@ CREATE TABLE IF NOT EXISTS `m_tax_component_history` ( CONSTRAINT `FK_tax_component_history_createdby` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_tax_component_history_lastmodifiedby` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_tax_component_history_tax_component_id` FOREIGN KEY (`tax_component_id`) REFERENCES `m_tax_component` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_tax_component_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tax_component_history` DISABLE KEYS */; @@ -5238,18 +5238,18 @@ CREATE TABLE IF NOT EXISTS `m_tax_component_history` ( -- Dumping structure for table fineract_default.m_tax_group DROP TABLE IF EXISTS `m_tax_group`; CREATE TABLE IF NOT EXISTS `m_tax_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_tax_group_createdby` (`createdby_id`), KEY `FK_tax_group_lastmodifiedby` (`lastmodifiedby_id`), CONSTRAINT `FK_tax_group_createdby` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_tax_group_lastmodifiedby` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_tax_group: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tax_group` DISABLE KEYS */; @@ -5259,14 +5259,14 @@ CREATE TABLE IF NOT EXISTS `m_tax_group` ( -- Dumping structure for table fineract_default.m_tax_group_mappings DROP TABLE IF EXISTS `m_tax_group_mappings`; CREATE TABLE IF NOT EXISTS `m_tax_group_mappings` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `tax_group_id` bigint(20) NOT NULL, - `tax_component_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `tax_group_id` BIGINT NOT NULL, + `tax_component_id` BIGINT NOT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_tax_group_mappings_tax_group` (`tax_group_id`), @@ -5277,7 +5277,7 @@ CREATE TABLE IF NOT EXISTS `m_tax_group_mappings` ( CONSTRAINT `FK_tax_group_mappings_lastmodifiedby` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_tax_group_mappings_tax_component` FOREIGN KEY (`tax_component_id`) REFERENCES `m_tax_component` (`id`), CONSTRAINT `FK_tax_group_mappings_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_tax_group_mappings: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tax_group_mappings` DISABLE KEYS */; @@ -5287,15 +5287,15 @@ CREATE TABLE IF NOT EXISTS `m_tax_group_mappings` ( -- Dumping structure for table fineract_default.m_tellers DROP TABLE IF EXISTS `m_tellers`; CREATE TABLE IF NOT EXISTS `m_tellers` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `debit_account_id` bigint(20) DEFAULT NULL, - `credit_account_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `debit_account_id` BIGINT DEFAULT NULL, + `credit_account_id` BIGINT DEFAULT NULL, `name` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `valid_from` date DEFAULT NULL, `valid_to` date DEFAULT NULL, - `state` smallint(5) DEFAULT NULL, + `state` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `m_tellers_name_unq` (`name`), KEY `IK_m_tellers_m_office` (`office_id`), @@ -5304,7 +5304,7 @@ CREATE TABLE IF NOT EXISTS `m_tellers` ( CONSTRAINT `FK_m_tellers_gl_account_credit_account_id` FOREIGN KEY (`credit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_m_tellers_gl_account_debit_account_id` FOREIGN KEY (`debit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_m_tellers_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_tellers: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tellers` DISABLE KEYS */; @@ -5314,14 +5314,14 @@ CREATE TABLE IF NOT EXISTS `m_tellers` ( -- Dumping structure for table fineract_default.m_template DROP TABLE IF EXISTS `m_template`; CREATE TABLE IF NOT EXISTS `m_template` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `text` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `entity` int(11) DEFAULT NULL, - `type` int(11) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `name` varchar(255) CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci NOT NULL, + `text` longtext CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci NOT NULL, + `entity` INT DEFAULT NULL, + `type` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_template: ~0 rows (approximately) /*!40000 ALTER TABLE `m_template` DISABLE KEYS */; @@ -5331,12 +5331,12 @@ CREATE TABLE IF NOT EXISTS `m_template` ( -- Dumping structure for table fineract_default.m_templatemappers DROP TABLE IF EXISTS `m_templatemappers`; CREATE TABLE IF NOT EXISTS `m_templatemappers` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `mapperkey` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `mapperorder` int(11) DEFAULT NULL, - `mappervalue` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `mapperkey` varchar(255) CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `mapperorder` INT DEFAULT NULL, + `mappervalue` varchar(255) CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_templatemappers: ~0 rows (approximately) /*!40000 ALTER TABLE `m_templatemappers` DISABLE KEYS */; @@ -5346,12 +5346,12 @@ CREATE TABLE IF NOT EXISTS `m_templatemappers` ( -- Dumping structure for table fineract_default.m_template_m_templatemappers DROP TABLE IF EXISTS `m_template_m_templatemappers`; CREATE TABLE IF NOT EXISTS `m_template_m_templatemappers` ( - `m_template_id` bigint(20) NOT NULL, - `mappers_id` bigint(20) NOT NULL, + `m_template_id` BIGINT NOT NULL, + `mappers_id` BIGINT NOT NULL, UNIQUE KEY `mappers_id` (`mappers_id`), KEY `mappers_id_2` (`mappers_id`), KEY `m_template_id` (`m_template_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_template_m_templatemappers: ~0 rows (approximately) /*!40000 ALTER TABLE `m_template_m_templatemappers` DISABLE KEYS */; @@ -5361,13 +5361,13 @@ CREATE TABLE IF NOT EXISTS `m_template_m_templatemappers` ( -- Dumping structure for table fineract_default.m_working_days DROP TABLE IF EXISTS `m_working_days`; CREATE TABLE IF NOT EXISTS `m_working_days` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `recurrence` varchar(100) DEFAULT NULL, - `repayment_rescheduling_enum` smallint(5) DEFAULT NULL, - `extend_term_daily_repayments` tinyint(1) DEFAULT '0', - `extend_term_holiday_repayment` tinyint(1) NOT NULL DEFAULT '0', + `repayment_rescheduling_enum` SMALLINT DEFAULT NULL, + `extend_term_daily_repayments` tinyint DEFAULT '0', + `extend_term_holiday_repayment` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.m_working_days: ~1 rows (approximately) /*!40000 ALTER TABLE `m_working_days` DISABLE KEYS */; @@ -5386,7 +5386,7 @@ CREATE TABLE IF NOT EXISTS `oauth_access_token` ( `client_id` varchar(256) DEFAULT NULL, `authentication` blob, `refresh_token` varchar(256) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.oauth_access_token: ~0 rows (approximately) /*!40000 ALTER TABLE `oauth_access_token` DISABLE KEYS */; @@ -5403,12 +5403,12 @@ CREATE TABLE IF NOT EXISTS `oauth_client_details` ( `authorized_grant_types` varchar(256) DEFAULT NULL, `web_server_redirect_uri` varchar(256) DEFAULT NULL, `authorities` varchar(256) DEFAULT NULL, - `access_token_validity` int(11) DEFAULT NULL, - `refresh_token_validity` int(11) DEFAULT NULL, + `access_token_validity` INT DEFAULT NULL, + `refresh_token_validity` INT DEFAULT NULL, `additional_information` varchar(4096) DEFAULT NULL, `autoapprove` bit(1) DEFAULT NULL, PRIMARY KEY (`client_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.oauth_client_details: ~0 rows (approximately) /*!40000 ALTER TABLE `oauth_client_details` DISABLE KEYS */; @@ -5423,7 +5423,7 @@ CREATE TABLE IF NOT EXISTS `oauth_refresh_token` ( `token_id` varchar(256) DEFAULT NULL, `token` blob, `authentication` blob -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.oauth_refresh_token: ~0 rows (approximately) /*!40000 ALTER TABLE `oauth_refresh_token` DISABLE KEYS */; @@ -5433,11 +5433,11 @@ CREATE TABLE IF NOT EXISTS `oauth_refresh_token` ( -- Dumping structure for table fineract_default.ppi_likelihoods DROP TABLE IF EXISTS `ppi_likelihoods`; CREATE TABLE IF NOT EXISTS `ppi_likelihoods` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) NOT NULL, `name` varchar(250) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.ppi_likelihoods: ~0 rows (approximately) /*!40000 ALTER TABLE `ppi_likelihoods` DISABLE KEYS */; @@ -5447,12 +5447,12 @@ CREATE TABLE IF NOT EXISTS `ppi_likelihoods` ( -- Dumping structure for table fineract_default.ppi_likelihoods_ppi DROP TABLE IF EXISTS `ppi_likelihoods_ppi`; CREATE TABLE IF NOT EXISTS `ppi_likelihoods_ppi` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `likelihood_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `likelihood_id` BIGINT NOT NULL, `ppi_name` varchar(250) NOT NULL, - `enabled` int(11) NOT NULL DEFAULT '100', + `enabled` INT NOT NULL DEFAULT '100', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.ppi_likelihoods_ppi: ~0 rows (approximately) /*!40000 ALTER TABLE `ppi_likelihoods_ppi` DISABLE KEYS */; @@ -5462,11 +5462,11 @@ CREATE TABLE IF NOT EXISTS `ppi_likelihoods_ppi` ( -- Dumping structure for table fineract_default.ppi_scores DROP TABLE IF EXISTS `ppi_scores`; CREATE TABLE IF NOT EXISTS `ppi_scores` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `score_from` int(11) NOT NULL, - `score_to` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `score_from` INT NOT NULL, + `score_to` INT NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.ppi_scores: ~20 rows (approximately) /*!40000 ALTER TABLE `ppi_scores` DISABLE KEYS */; @@ -5497,13 +5497,13 @@ INSERT INTO `ppi_scores` (`id`, `score_from`, `score_to`) VALUES -- Dumping structure for table fineract_default.ref_loan_transaction_processing_strategy DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`; CREATE TABLE IF NOT EXISTS `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `sort_order` int(4) DEFAULT NULL, + `sort_order` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.ref_loan_transaction_processing_strategy: ~7 rows (approximately) /*!40000 ALTER TABLE `ref_loan_transaction_processing_strategy` DISABLE KEYS */; @@ -5521,9 +5521,9 @@ INSERT INTO `ref_loan_transaction_processing_strategy` (`id`, `code`, `name`, `s -- Dumping structure for table fineract_default.rpt_sequence DROP TABLE IF EXISTS `rpt_sequence`; CREATE TABLE IF NOT EXISTS `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.rpt_sequence: ~0 rows (approximately) /*!40000 ALTER TABLE `rpt_sequence` DISABLE KEYS */; @@ -5534,14 +5534,14 @@ CREATE TABLE IF NOT EXISTS `rpt_sequence` ( DROP TABLE IF EXISTS `r_enum_value`; CREATE TABLE IF NOT EXISTS `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, - `enum_type` tinyint(1) NOT NULL, + `enum_type` tinyint NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.r_enum_value: ~159 rows (approximately) /*!40000 ALTER TABLE `r_enum_value` DISABLE KEYS */; @@ -5711,12 +5711,12 @@ INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `en -- Dumping structure for table fineract_default.scheduler_detail DROP TABLE IF EXISTS `scheduler_detail`; CREATE TABLE IF NOT EXISTS `scheduler_detail` ( - `id` smallint(2) NOT NULL AUTO_INCREMENT, - `is_suspended` tinyint(1) NOT NULL DEFAULT '0', - `execute_misfired_jobs` tinyint(1) NOT NULL DEFAULT '1', - `reset_scheduler_on_bootup` tinyint(1) NOT NULL DEFAULT '1', + `id` SMALLINT NOT NULL AUTO_INCREMENT, + `is_suspended` tinyint NOT NULL DEFAULT '0', + `execute_misfired_jobs` tinyint NOT NULL DEFAULT '1', + `reset_scheduler_on_bootup` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.scheduler_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `scheduler_detail` DISABLE KEYS */; @@ -5728,22 +5728,22 @@ INSERT INTO `scheduler_detail` (`id`, `is_suspended`, `execute_misfired_jobs`, ` -- Dumping structure for table fineract_default.schema_version DROP TABLE IF EXISTS `schema_version`; CREATE TABLE IF NOT EXISTS `schema_version` ( - `version_rank` int(11) NOT NULL, - `installed_rank` int(11) NOT NULL, + `version_rank` INT NOT NULL, + `installed_rank` INT NOT NULL, `version` varchar(50) NOT NULL, `description` varchar(200) NOT NULL, `type` varchar(20) NOT NULL, `script` varchar(1000) NOT NULL, - `checksum` int(11) DEFAULT NULL, + `checksum` INT DEFAULT NULL, `installed_by` varchar(100) NOT NULL, `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `execution_time` int(11) NOT NULL, - `success` tinyint(1) NOT NULL, + `execution_time` INT NOT NULL, + `success` tinyint NOT NULL, PRIMARY KEY (`version`), KEY `schema_version_vr_idx` (`version_rank`), KEY `schema_version_ir_idx` (`installed_rank`), KEY `schema_version_s_idx` (`success`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.schema_version: ~337 rows (approximately) /*!40000 ALTER TABLE `schema_version` DISABLE KEYS */; @@ -6091,30 +6091,30 @@ INSERT INTO `schema_version` (`version_rank`, `installed_rank`, `version`, `desc -- Dumping structure for table fineract_default.sms_campaign DROP TABLE IF EXISTS `sms_campaign`; CREATE TABLE IF NOT EXISTS `sms_campaign` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `campaign_name` varchar(100) NOT NULL, - `campaign_type` int(11) NOT NULL, - `campaign_trigger_type` int(11) NOT NULL, - `report_id` int(11) NOT NULL, - `provider_id` bigint(20) NOT NULL, + `campaign_type` INT NOT NULL, + `campaign_trigger_type` INT NOT NULL, + `report_id` INT NOT NULL, + `provider_id` BIGINT NOT NULL, `param_value` text, - `status_enum` int(11) NOT NULL, + `status_enum` INT NOT NULL, `message` text NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `recurrence` varchar(100) DEFAULT NULL, `next_trigger_date` datetime DEFAULT NULL, `last_trigger_date` datetime DEFAULT NULL, `recurrence_start_date` datetime DEFAULT NULL, - `is_visible` tinyint(1) DEFAULT '1', + `is_visible` tinyint DEFAULT '1', PRIMARY KEY (`id`), KEY `report_id` (`report_id`), CONSTRAINT `sms_campaign_ibfk_1` FOREIGN KEY (`report_id`) REFERENCES `stretchy_report` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.sms_campaign: ~0 rows (approximately) /*!40000 ALTER TABLE `sms_campaign` DISABLE KEYS */; @@ -6124,14 +6124,14 @@ CREATE TABLE IF NOT EXISTS `sms_campaign` ( -- Dumping structure for table fineract_default.sms_messages_outbound DROP TABLE IF EXISTS `sms_messages_outbound`; CREATE TABLE IF NOT EXISTS `sms_messages_outbound` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `status_enum` int(5) NOT NULL DEFAULT '100', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT DEFAULT NULL, + `status_enum` INT NOT NULL DEFAULT '100', `mobile_no` varchar(50) NOT NULL, `message` varchar(1000) NOT NULL, - `campaign_id` bigint(20) NOT NULL, + `campaign_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `submittedon_date` date DEFAULT NULL, `delivered_on_date` datetime DEFAULT NULL, @@ -6144,7 +6144,7 @@ CREATE TABLE IF NOT EXISTS `sms_messages_outbound` ( CONSTRAINT `FKCLIENT00000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKGROUP000000001` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSTAFF000000001` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.sms_messages_outbound: ~0 rows (approximately) /*!40000 ALTER TABLE `sms_messages_outbound` DISABLE KEYS */; @@ -6154,7 +6154,7 @@ CREATE TABLE IF NOT EXISTS `sms_messages_outbound` ( -- Dumping structure for table fineract_default.stretchy_parameter DROP TABLE IF EXISTS `stretchy_parameter`; CREATE TABLE IF NOT EXISTS `stretchy_parameter` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -6165,12 +6165,12 @@ CREATE TABLE IF NOT EXISTS `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_id` int(11) DEFAULT NULL, + `parent_id` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), KEY `fk_stretchy_parameter_001_idx` (`parent_id`), CONSTRAINT `fk_stretchy_parameter_001` FOREIGN KEY (`parent_id`) REFERENCES `stretchy_parameter` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1023 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1023 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.stretchy_parameter: ~32 rows (approximately) /*!40000 ALTER TABLE `stretchy_parameter` DISABLE KEYS */; @@ -6182,7 +6182,7 @@ INSERT INTO `stretchy_parameter` (`id`, `parameter_name`, `parameter_variable`, (6, 'loanOfficerIdSelectAll', 'loanOfficerId', 'Loan Officer', 'select', 'number', '0', NULL, NULL, 'Y', '(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2', 5), (10, 'currencyIdSelectAll', 'currencyId', 'Currency', 'select', 'number', '0', NULL, NULL, 'Y', 'select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`', NULL), (20, 'fundIdSelectAll', 'fundId', 'Fund', 'select', 'number', '0', NULL, NULL, 'Y', '(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2', NULL), - (25, 'loanProductIdSelectAll', 'loanProductId', 'Product', 'select', 'number', '0', NULL, NULL, 'Y', 'select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere (p.currency_code = \'${currencyId}\' or \'-1\'= \'${currencyId}\')\r\norder by 2', 10), + (25, 'loanProductIdSelectAll', 'loanProductId', 'Product', 'select', 'number', '0', NULL, NULL, 'Y', 'select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere (p.currency_code = \'$\{currencyId}\' or \'-1\'= \'$\{currencyId}\')\r\norder by 2', 10), (26, 'loanPurposeIdSelectAll', 'loanPurposeId', 'Loan Purpose', 'select', 'number', '0', NULL, NULL, 'Y', 'select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = "loanPurpose"\r\norder by v.order_position) x', NULL), (100, 'parTypeSelect', 'parType', 'parType', 'select', 'number', '0', NULL, NULL, NULL, 'select * from\r\n(select 1 as id, "Principal Only" as `name` union all\r\nselect 2, "Principal + Interest" union all\r\nselect 3, "Principal + Interest + Fees" union all\r\nselect 4, "Principal + Interest + Fees + Penalties") x\r\norder by x.`id`', NULL), (1001, 'FullReportList', NULL, 'n/a', 'n/a', 'n/a', 'n/a', 'Y', NULL, NULL, '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', NULL), @@ -6213,49 +6213,49 @@ INSERT INTO `stretchy_parameter` (`id`, `parameter_name`, `parameter_variable`, -- Dumping structure for table fineract_default.stretchy_report DROP TABLE IF EXISTS `stretchy_report`; CREATE TABLE IF NOT EXISTS `stretchy_report` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB AUTO_INCREMENT=188 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=188 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.stretchy_report: ~115 rows (approximately) /*!40000 ALTER TABLE `stretchy_report` DISABLE KEYS */; INSERT INTO `stretchy_report` (`id`, `report_name`, `report_type`, `report_subtype`, `report_category`, `report_sql`, `description`, `core_report`, `use_report`) VALUES (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",\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', 'Individual Client Report\r\n\r\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.\r\n\r\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), - (2, 'Client Loans Listing', 'Table', NULL, 'Client', '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', 'Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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), - (5, 'Loans Awaiting Disbursal', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nc.account_no as "Client Account No", c.display_name as "Name", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as "Term Frequency",\n\n\r\ntf.enum_message_property as "Term Frequency Period",\r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate",\r\ndate(l.approvedon_date) "Approved",\r\ndatediff(l.expected_disbursedon_date, curdate()) as "Days to Disbursal",\r\ndate(l.expected_disbursedon_date) "Expected Disbursal",\r\npurp.code_value as "Loan Purpose",\r\n lo.display_name as "Loan Officer"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = "term_period_frequency_enum" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no', 'Individual Client Report', 1, 1), - (6, 'Loans Awaiting Disbursal Summary', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\npl.`name` as "Product", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`, ounder.name\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`', 'Individual Client Report', 1, 1), - (7, 'Loans Awaiting Disbursal Summary by Month', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\npl.`name` as "Product", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as "Year", \r\nmonthname(l.expected_disbursedon_date) as "Month",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date), ounder.name, l.expected_disbursedon_date\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)', 'Individual Client Report', 1, 1), - (8, 'Loans Pending Approval', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nc.account_no as "Client Account No.", c.display_name as "Client Name", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as "Product", \r\nl.account_no as "Loan Account No.", \r\nl.principal_amount as "Loan Amount", \r\nl.term_frequency as "Term Frequency",\n\n\r\ntf.enum_message_property as "Term Frequency Period",\r\nl.annual_nominal_interest_rate as " Annual \n\nNominal Interest Rate", \r\ndatediff(curdate(), l.submittedon_date) "Days Pending Approval", \r\npurp.code_value as "Loan Purpose",\r\nlo.display_name as "Loan Officer"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = "term_period_frequency_enum" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no', 'Individual Client Report', 1, 1), - (11, 'Active Loans - Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', NULL, 1, 1), - (12, 'Active Loans - Details', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", \r\nc.display_name as "Client", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\ndate(l.expected_maturedon_date) as "Expected Matured On",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\npenalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), - (13, 'Obligation Met Loans Details', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as "Client Account No.", c.display_name as "Client",\r\nl.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.total_repayment_derived as "Total Repaid", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", \r\ndate(l.closedon_date) as "Closed",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nlo.display_name as "Loan Officer"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), - (14, 'Obligation Met Loans Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as "No. of Clients",\r\ncount(distinct(l.id)) as "No. of Loans",\r\nsum(l.principal_amount) as "Total Loan Amount", \r\nsum(l.principal_repaid_derived) as "Total Principal Repaid",\r\nsum(l.interest_repaid_derived) as "Total Interest Repaid",\r\nsum(l.fee_charges_repaid_derived) as "Total Fees Repaid",\r\nsum(l.penalty_charges_repaid_derived) as "Total Penalties Repaid",\r\nsum(l.interest_waived_derived) as "Total Interest Waived",\r\nsum(l.fee_charges_waived_derived) as "Total Fees Waived",\r\nsum(l.penalty_charges_waived_derived) as "Total Penalties Waived"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code, ounder.name\r\norder by ounder.hierarchy, l.currency_code', 'Individual Client \n\nReport', 1, 1), - (15, 'Portfolio at Risk', 'Table', NULL, 'Loan', 'select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as "Principal Outstanding",\r\nsum(laa.principal_overdue_derived) as "Principal Overdue",\r\n\r\nsum(l.interest_outstanding_derived) as "Interest Outstanding",\r\nsum(laa.interest_overdue_derived) as "Interest Overdue",\r\n\r\nsum(l.fee_charges_outstanding_derived) as "Fees Outstanding",\r\nsum(laa.fee_charges_overdue_derived) as "Fees Overdue",\r\n\r\nsum(penalty_charges_outstanding_derived) as "Penalties Outstanding",\r\nsum(laa.penalty_charges_overdue_derived) as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x', 'Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)', 1, 1), - (16, 'Portfolio at Risk by Branch', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as "branch", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as "Principal Outstanding",\r\nsum(laa.principal_overdue_derived) as "Principal Overdue",\r\n\r\nsum(l.interest_outstanding_derived) as "Interest Outstanding",\r\nsum(laa.interest_overdue_derived) as "Interest Overdue",\r\n\r\nsum(l.fee_charges_outstanding_derived) as "Fees Outstanding",\r\nsum(laa.fee_charges_overdue_derived) as "Fees Overdue",\r\n\r\nsum(penalty_charges_outstanding_derived) as "Penalties Outstanding",\r\nsum(laa.penalty_charges_overdue_derived) as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', 'Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)', 1, 1), - (20, 'Funds Disbursed Between Dates Summary', 'Table', NULL, 'Fund', 'select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)', NULL, 1, 1), - (21, 'Funds Disbursed Between Dates Summary by Office', 'Table', NULL, 'Fund', 'select \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)', NULL, 1, 1), + (2, 'Client Loans Listing', 'Table', NULL, 'Client', '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', 'Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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), + (5, 'Loans Awaiting Disbursal', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nc.account_no as "Client Account No", c.display_name as "Name", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as "Term Frequency",\n\n\r\ntf.enum_message_property as "Term Frequency Period",\r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate",\r\ndate(l.approvedon_date) "Approved",\r\ndatediff(l.expected_disbursedon_date, curdate()) as "Days to Disbursal",\r\ndate(l.expected_disbursedon_date) "Expected Disbursal",\r\npurp.code_value as "Loan Purpose",\r\n lo.display_name as "Loan Officer"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = "term_period_frequency_enum" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no', 'Individual Client Report', 1, 1), + (6, 'Loans Awaiting Disbursal Summary', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\npl.`name` as "Product", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`, ounder.name\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`', 'Individual Client Report', 1, 1), + (7, 'Loans Awaiting Disbursal Summary by Month', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\npl.`name` as "Product", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as "Year", \r\nmonthname(l.expected_disbursedon_date) as "Month",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date), ounder.name, l.expected_disbursedon_date\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)', 'Individual Client Report', 1, 1), + (8, 'Loans Pending Approval', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nc.account_no as "Client Account No.", c.display_name as "Client Name", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as "Product", \r\nl.account_no as "Loan Account No.", \r\nl.principal_amount as "Loan Amount", \r\nl.term_frequency as "Term Frequency",\n\n\r\ntf.enum_message_property as "Term Frequency Period",\r\nl.annual_nominal_interest_rate as " Annual \n\nNominal Interest Rate", \r\ndatediff(curdate(), l.submittedon_date) "Days Pending Approval", \r\npurp.code_value as "Loan Purpose",\r\nlo.display_name as "Loan Officer"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = "term_period_frequency_enum" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no', 'Individual Client Report', 1, 1), + (11, 'Active Loans - Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', NULL, 1, 1), + (12, 'Active Loans - Details', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", \r\nc.display_name as "Client", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\ndate(l.expected_maturedon_date) as "Expected Matured On",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\npenalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), + (13, 'Obligation Met Loans Details', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as "Client Account No.", c.display_name as "Client",\r\nl.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.total_repayment_derived as "Total Repaid", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", \r\ndate(l.closedon_date) as "Closed",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nlo.display_name as "Loan Officer"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), + (14, 'Obligation Met Loans Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as "No. of Clients",\r\ncount(distinct(l.id)) as "No. of Loans",\r\nsum(l.principal_amount) as "Total Loan Amount", \r\nsum(l.principal_repaid_derived) as "Total Principal Repaid",\r\nsum(l.interest_repaid_derived) as "Total Interest Repaid",\r\nsum(l.fee_charges_repaid_derived) as "Total Fees Repaid",\r\nsum(l.penalty_charges_repaid_derived) as "Total Penalties Repaid",\r\nsum(l.interest_waived_derived) as "Total Interest Waived",\r\nsum(l.fee_charges_waived_derived) as "Total Fees Waived",\r\nsum(l.penalty_charges_waived_derived) as "Total Penalties Waived"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code, ounder.name\r\norder by ounder.hierarchy, l.currency_code', 'Individual Client \n\nReport', 1, 1), + (15, 'Portfolio at Risk', 'Table', NULL, 'Loan', 'select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as "Principal Outstanding",\r\nsum(laa.principal_overdue_derived) as "Principal Overdue",\r\n\r\nsum(l.interest_outstanding_derived) as "Interest Outstanding",\r\nsum(laa.interest_overdue_derived) as "Interest Overdue",\r\n\r\nsum(l.fee_charges_outstanding_derived) as "Fees Outstanding",\r\nsum(laa.fee_charges_overdue_derived) as "Fees Overdue",\r\n\r\nsum(penalty_charges_outstanding_derived) as "Penalties Outstanding",\r\nsum(laa.penalty_charges_overdue_derived) as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x', 'Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)', 1, 1), + (16, 'Portfolio at Risk by Branch', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as "branch", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as "Principal Outstanding",\r\nsum(laa.principal_overdue_derived) as "Principal Overdue",\r\n\r\nsum(l.interest_outstanding_derived) as "Interest Outstanding",\r\nsum(laa.interest_overdue_derived) as "Interest Overdue",\r\n\r\nsum(l.fee_charges_outstanding_derived) as "Fees Outstanding",\r\nsum(laa.fee_charges_overdue_derived) as "Fees Overdue",\r\n\r\nsum(penalty_charges_outstanding_derived) as "Penalties Outstanding",\r\nsum(laa.penalty_charges_overdue_derived) as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', 'Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)', 1, 1), + (20, 'Funds Disbursed Between Dates Summary', 'Table', NULL, 'Fund', 'select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)', NULL, 1, 1), + (21, 'Funds Disbursed Between Dates Summary by Office', 'Table', NULL, 'Fund', 'select \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)', NULL, 1, 1), (48, 'Balance Sheet', 'Pentaho', NULL, 'Accounting', NULL, 'Balance Sheet', 1, 1), (49, 'Income Statement', 'Pentaho', NULL, 'Accounting', NULL, 'Profit and Loss Statement', 1, 1), (50, 'Trial Balance', 'Pentaho', NULL, 'Accounting', NULL, 'Trial Balance Report', 1, 1), - (51, 'Written-Off Loans', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as "Client Account No.",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as "Loan Amount",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = "${currencyId}" or "-1" = "${currencyId}") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no', 'Individual Lending Report. Written Off Loans', 1, 1), + (51, 'Written-Off Loans', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as "Client Account No.",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as "Loan Amount",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no', 'Individual Lending Report. Written Off Loans', 1, 1), (52, 'Aging Detail', 'Table', NULL, 'Loan', '\r\nSELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as "Client Account No.",\r\n mc.display_name AS "Client Name",\r\n ml.account_no AS "Account Number",\r\n ml.principal_amount AS "Loan Amount",\r\n ml.principal_disbursed_derived AS "Original Principal",\r\n ml.interest_charged_derived AS "Original Interest",\r\n ml.principal_repaid_derived AS "Principal Paid",\r\n ml.interest_repaid_derived AS "Interest Paid",\r\n laa.principal_overdue_derived AS "Principal Overdue",\r\n laa.interest_overdue_derived AS "Interest Overdue",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as "Days in Arrears",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS "Weeks In Arrears Band",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS "Days in Arrears Band"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id AND rev.enum_name = \'loan_status_id\'\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no\r\n', 'Loan arrears aging (Weeks)', 1, 1), - (53, 'Aging Summary (Arrears in Weeks)', 'Table', NULL, 'Loan', 'SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = "${currencyId}" or "-1" = "${currencyId}")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid', 'Loan amount in arrears by branch', 1, 1), - (54, 'Rescheduled Loans', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as "Client Account No.",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as "Loan Amount",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\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), - (55, 'Active Loans Passed Final Maturity', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", \r\nc.display_name as "Client", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\ndate(l.expected_maturedon_date) as "Expected Matured On",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\nlaa.penalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), - (56, 'Active Loans Passed Final Maturity Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', NULL, 1, 1), - (57, 'Active Loans in last installment', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as "Office/Branch",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\nlaa.penalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", c.account_no as "Client Account No",\r\nc.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, l.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as "Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", date(l.expected_maturedon_date) as "Expected Matured On"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`', 'Individual Client \n\nReport', 1, 1), - (58, 'Active Loans in last installment Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", c.id as clientId, c.account_no as "Client Account No",\r\nc.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, l.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as "Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", date(l.expected_maturedon_date) as "Expected Matured On"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId, lastInstallment.Currency) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency', 'Individual Client \n\nReport', 1, 1), - (59, 'Active Loans by Disbursal Period', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as "Client Account No", c.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Principal Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\n\r\nl.total_expected_repayment_derived as "Total Loan (P+I+F+Pen)",\r\nl.total_repayment_derived as "Total Repaid (P+I+F+Pen)",\r\nlo.display_name as "Loan Officer"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), - (61, 'Aging Summary (Arrears in Months)', 'Table', NULL, 'Loan', 'SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = "${currencyId}" or "-1" = "${currencyId}")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid', 'Loan amount in arrears by branch', 1, 1), + (53, 'Aging Summary (Arrears in Weeks)', 'Table', NULL, 'Loan', 'SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid', 'Loan amount in arrears by branch', 1, 1), + (54, 'Rescheduled Loans', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as "Client Account No.",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as "Loan Amount",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\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), + (55, 'Active Loans Passed Final Maturity', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", \r\nc.display_name as "Client", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\ndate(l.expected_maturedon_date) as "Expected Matured On",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\nlaa.penalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), + (56, 'Active Loans Passed Final Maturity Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', NULL, 1, 1), + (57, 'Active Loans in last installment', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as "Office/Branch",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\nlaa.penalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", c.account_no as "Client Account No",\r\nc.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, l.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as "Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", date(l.expected_maturedon_date) as "Expected Matured On"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`', 'Individual Client \n\nReport', 1, 1), + (58, 'Active Loans in last installment Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", c.id as clientId, c.account_no as "Client Account No",\r\nc.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, l.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as "Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", date(l.expected_maturedon_date) as "Expected Matured On"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId, lastInstallment.Currency) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency', 'Individual Client \n\nReport', 1, 1), + (59, 'Active Loans by Disbursal Period', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as "Client Account No", c.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Principal Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\n\r\nl.total_expected_repayment_derived as "Total Loan (P+I+F+Pen)",\r\nl.total_repayment_derived as "Total Repaid (P+I+F+Pen)",\r\nlo.display_name as "Loan Officer"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), + (61, 'Aging Summary (Arrears in Months)', 'Table', NULL, 'Loan', 'SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid', 'Loan amount in arrears by branch', 1, 1), (91, 'Loan Account Schedule', 'Pentaho', NULL, 'Loan', NULL, NULL, 1, 0), (92, 'Branch Expected Cash Flow', 'Pentaho', NULL, 'Loan', NULL, NULL, 1, 1), (93, 'Expected Payments By Date - Basic', 'Table', NULL, 'Loan', 'SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = "${loanOfficerId}" OR "-1" = "${loanOfficerId}")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no', 'Test', 1, 1), @@ -6350,9 +6350,9 @@ INSERT INTO `stretchy_report` (`id`, `report_name`, `report_type`, `report_subty -- Dumping structure for table fineract_default.stretchy_report_parameter DROP TABLE IF EXISTS `stretchy_report_parameter`; CREATE TABLE IF NOT EXISTS `stretchy_report_parameter` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `report_parameter_unique` (`report_id`,`parameter_id`), @@ -6360,7 +6360,7 @@ CREATE TABLE IF NOT EXISTS `stretchy_report_parameter` ( KEY `fk_report_parameter_002_idx` (`parameter_id`), CONSTRAINT `fk_report_parameter_001` FOREIGN KEY (`report_id`) REFERENCES `stretchy_report` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT `fk_report_parameter_002` FOREIGN KEY (`parameter_id`) REFERENCES `stretchy_parameter` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=522 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=522 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.stretchy_report_parameter: ~415 rows (approximately) /*!40000 ALTER TABLE `stretchy_report_parameter` DISABLE KEYS */; @@ -6788,9 +6788,9 @@ DROP TABLE IF EXISTS `x_registered_table`; CREATE TABLE IF NOT EXISTS `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, - `category` int(11) NOT NULL DEFAULT '100', + `category` INT NOT NULL DEFAULT '100', PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.x_registered_table: ~0 rows (approximately) /*!40000 ALTER TABLE `x_registered_table` DISABLE KEYS */; @@ -6801,11 +6801,11 @@ CREATE TABLE IF NOT EXISTS `x_registered_table` ( DROP TABLE IF EXISTS `x_table_column_code_mappings`; CREATE TABLE IF NOT EXISTS `x_table_column_code_mappings` ( `column_alias_name` varchar(50) NOT NULL, - `code_id` int(10) NOT NULL, + `code_id` INT NOT NULL, PRIMARY KEY (`column_alias_name`), KEY `FK_x_code_id` (`code_id`), CONSTRAINT `FK_x_code_id` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table fineract_default.x_table_column_code_mappings: ~0 rows (approximately) /*!40000 ALTER TABLE `x_table_column_code_mappings` DISABLE KEYS */; diff --git a/fineract-provider/src/main/resources/sql/migrations/sample_data/interop_sample_data.sql b/fineract-provider/src/main/resources/sql/migrations/sample_data/interop_sample_data.sql index 430b5151f..8613bf9b7 100644 --- a/fineract-provider/src/main/resources/sql/migrations/sample_data/interop_sample_data.sql +++ b/fineract-provider/src/main/resources/sql/migrations/sample_data/interop_sample_data.sql @@ -22,7 +22,7 @@ -- saving product, account SET @last_saving_prod_id = -1; -SELECT COALESCE(max(id), 1) into @last_saving_prod_id from m_savings_product; +SELECT COALESCE(max(id), 1) from m_savings_product into @last_saving_prod_id; SET @saving_prod_name = concat('Saving Product', @last_saving_prod_id); @@ -37,7 +37,7 @@ VALUES (@saving_prod_name, concat('SP', @last_saving_prod_id), 'Saving Product', 4, 1, 360, NULL, 2, NULL, NULL, 0, 0, 0.000000, 1, NULL, 0, NULL, 0); SET @saving_prod_id = -1; -SELECT id INTO @saving_prod_id FROM m_savings_product WHERE name = @saving_prod_name; +SELECT id FROM m_savings_product WHERE name = @saving_prod_name INTO @saving_prod_id; -- interop_identifier @@ -46,7 +46,7 @@ SELECT id INTO @saving_prod_id FROM m_savings_product WHERE name = @saving_prod_ -- ASSET-1, LIABILITY-2, EQUITY-3, INCOME-4, EXPENSE-5 SET @payment_type_id = -1; -SELECT id INTO @payment_type_id FROM m_payment_type WHERE value = 'Money Transfer'; +SELECT id FROM m_payment_type WHERE value = 'Money Transfer' INTO @payment_type_id; SET @saving_gl_name = 'Interoperation Saving'; INSERT INTO `acc_gl_account` (`name`, `parent_id`, `hierarchy`, `gl_code`, `disabled`, `manual_journal_entries_allowed`, `account_usage`, `classification_enum`, `description`) @@ -67,7 +67,7 @@ INSERT INTO `acc_gl_account` (`name`, `parent_id`, `hierarchy`, `gl_code`, `disa VALUES (@fee_gl_name, NULL, NULL, 'Interop_Fee', 0, 0, 1, 4, 'Interoperation Fee Income'); -- account_usage: DETAIL, classification_enum: INCOME SET @fee_gl_id = -1; -SELECT id INTO @fee_gl_id FROM acc_gl_account WHERE name = @fee_gl_name; +SELECT id FROM acc_gl_account WHERE name = @fee_gl_name INTO @fee_gl_id; INSERT INTO `acc_product_mapping` (`gl_account_id`, `product_id`, `product_type`, `payment_type`, `charge_id`, `financial_account_type`) VALUES (@fee_gl_id, @saving_prod_id, 2, NULL, NULL, 4); -- product_type: SAVING, financial_account_type: INCOME @@ -82,7 +82,7 @@ VALUES (@charge_name, 'TZS', 2, 5, 1, NULL, 1.000000, NULL, NULL, NULL, 0, 0, 0, -- loan product /* SET @last_ext_id = -1; -SELECT COALESCE(max(external_id), 1) INTO @last_ext_id FROM m_product_loan; +SELECT COALESCE(max(external_id), 1) FROM m_product_loan INTO @last_ext_id; INSERT INTO `m_product_loan` VALUES @@ -92,7 +92,7 @@ VALUES NULL, 1, 30, 0, 0, 0.00, 0, 1, 0, 0, 0); SET @product_id = -1; -SELECT id INTO @product_id FROM m_product_loan WHERE name = concat('Interoperation Customer Product', @last_product_id); +SELECT id FROM m_product_loan WHERE name = concat('Interoperation Customer Product', @last_product_id) INTO @product_id; -- charge, mapping INSERT INTO `m_charge` VALUES ( diff --git a/fineract-provider/src/main/resources/sql/migrations/sample_data/load_sample_data.sql b/fineract-provider/src/main/resources/sql/migrations/sample_data/load_sample_data.sql index 80fa76523..d669fffa2 100644 --- a/fineract-provider/src/main/resources/sql/migrations/sample_data/load_sample_data.sql +++ b/fineract-provider/src/main/resources/sql/migrations/sample_data/load_sample_data.sql @@ -25,22 +25,22 @@ -- -------------------------------------------------------- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES UTF8MB4 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -- Dumping structure for table mifostenant-reference.acc_accounting_rule DROP TABLE IF EXISTS `acc_accounting_rule`; CREATE TABLE IF NOT EXISTS `acc_accounting_rule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, - `office_id` bigint(20) DEFAULT NULL, - `debit_account_id` bigint(20) DEFAULT NULL, - `allow_multiple_debits` tinyint(1) NOT NULL DEFAULT '0', - `credit_account_id` bigint(20) DEFAULT NULL, - `allow_multiple_credits` tinyint(1) NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, + `debit_account_id` BIGINT DEFAULT NULL, + `allow_multiple_debits` tinyint NOT NULL DEFAULT '0', + `credit_account_id` BIGINT DEFAULT NULL, + `allow_multiple_credits` tinyint NOT NULL DEFAULT '0', `description` varchar(500) DEFAULT NULL, - `system_defined` tinyint(1) NOT NULL DEFAULT '0', + `system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `accounting_rule_name_unique` (`name`), KEY `FK_acc_accounting_rule_acc_gl_account_debit` (`debit_account_id`), @@ -49,7 +49,7 @@ CREATE TABLE IF NOT EXISTS `acc_accounting_rule` ( CONSTRAINT `FK_acc_accounting_rule_acc_gl_account_credit` FOREIGN KEY (`credit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_acc_accounting_rule_acc_gl_account_debit` FOREIGN KEY (`debit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_acc_accounting_rule_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.acc_accounting_rule: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_accounting_rule` DISABLE KEYS */; @@ -59,16 +59,16 @@ CREATE TABLE IF NOT EXISTS `acc_accounting_rule` ( -- Dumping structure for table mifostenant-reference.acc_gl_account DROP TABLE IF EXISTS `acc_gl_account`; CREATE TABLE IF NOT EXISTS `acc_gl_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, - `parent_id` bigint(20) DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(50) DEFAULT NULL, `gl_code` varchar(45) NOT NULL, - `disabled` tinyint(1) NOT NULL DEFAULT '0', - `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1', - `account_usage` tinyint(1) NOT NULL DEFAULT '2', - `classification_enum` smallint(5) NOT NULL, - `tag_id` int(11) DEFAULT NULL, + `disabled` tinyint NOT NULL DEFAULT '0', + `manual_journal_entries_allowed` tinyint NOT NULL DEFAULT '1', + `account_usage` tinyint NOT NULL DEFAULT '2', + `classification_enum` SMALLINT NOT NULL, + `tag_id` INT DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `acc_gl_code` (`gl_code`), @@ -76,7 +76,7 @@ CREATE TABLE IF NOT EXISTS `acc_gl_account` ( KEY `FKGLACC000000002` (`tag_id`), CONSTRAINT `FKGLACC000000002` FOREIGN KEY (`tag_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.acc_gl_account: ~55 rows (approximately) /*!40000 ALTER TABLE `acc_gl_account` DISABLE KEYS */; @@ -142,12 +142,12 @@ INSERT INTO `acc_gl_account` (`id`, `name`, `parent_id`, `hierarchy`, `gl_code`, -- Dumping structure for table mifostenant-reference.acc_gl_closure DROP TABLE IF EXISTS `acc_gl_closure`; CREATE TABLE IF NOT EXISTS `acc_gl_closure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, `closing_date` date NOT NULL, - `is_deleted` int(20) NOT NULL DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `is_deleted` INT NOT NULL DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `comments` varchar(500) DEFAULT NULL, @@ -159,7 +159,7 @@ CREATE TABLE IF NOT EXISTS `acc_gl_closure` ( CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.acc_gl_closure: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_gl_closure` DISABLE KEYS */; @@ -169,14 +169,14 @@ CREATE TABLE IF NOT EXISTS `acc_gl_closure` ( -- Dumping structure for table mifostenant-reference.acc_gl_financial_activity_account DROP TABLE IF EXISTS `acc_gl_financial_activity_account`; CREATE TABLE IF NOT EXISTS `acc_gl_financial_activity_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) NOT NULL DEFAULT '0', - `financial_activity_type` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT NOT NULL DEFAULT '0', + `financial_activity_type` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `financial_activity_type` (`financial_activity_type`), KEY `FK_office_mapping_acc_gl_account` (`gl_account_id`), CONSTRAINT `FK_office_mapping_acc_gl_account` FOREIGN KEY (`gl_account_id`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.acc_gl_financial_activity_account: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_gl_financial_activity_account` DISABLE KEYS */; @@ -188,33 +188,33 @@ INSERT INTO `acc_gl_financial_activity_account` (`id`, `gl_account_id`, `financi -- Dumping structure for table mifostenant-reference.acc_gl_journal_entry DROP TABLE IF EXISTS `acc_gl_journal_entry`; CREATE TABLE IF NOT EXISTS `acc_gl_journal_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `reversal_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `reversal_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, `transaction_id` varchar(50) NOT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `savings_transaction_id` bigint(20) DEFAULT NULL, - `client_transaction_id` bigint(20) DEFAULT NULL, - `reversed` tinyint(1) NOT NULL DEFAULT '0', + `loan_transaction_id` BIGINT DEFAULT NULL, + `savings_transaction_id` BIGINT DEFAULT NULL, + `client_transaction_id` BIGINT DEFAULT NULL, + `reversed` tinyint NOT NULL DEFAULT '0', `ref_num` varchar(100) DEFAULT NULL, - `manual_entry` tinyint(1) NOT NULL DEFAULT '0', + `manual_entry` tinyint NOT NULL DEFAULT '0', `entry_date` date NOT NULL, - `type_enum` smallint(5) NOT NULL, + `type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(500) DEFAULT NULL, - `entity_type_enum` smallint(5) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `entity_type_enum` SMALLINT DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, + `createdby_id` BIGINT NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, `lastmodified_date` datetime NOT NULL, - `is_running_balance_calculated` tinyint(4) NOT NULL DEFAULT '0', + `is_running_balance_calculated` TINYINT NOT NULL DEFAULT '0', `office_running_balance` decimal(19,6) NOT NULL DEFAULT '0.000000', `organization_running_balance` decimal(19,6) NOT NULL DEFAULT '0.000000', - `payment_details_id` bigint(20) DEFAULT NULL, - `share_transaction_id` bigint(20) DEFAULT NULL, + `payment_details_id` BIGINT DEFAULT NULL, + `share_transaction_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_acc_gl_journal_entry_m_office` (`office_id`), KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`), @@ -236,7 +236,7 @@ CREATE TABLE IF NOT EXISTS `acc_gl_journal_entry` ( CONSTRAINT `FK_acc_gl_journal_entry_m_payment_detail` FOREIGN KEY (`payment_details_id`) REFERENCES `m_payment_detail` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_savings_account_transaction` FOREIGN KEY (`savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`), CONSTRAINT `FK_acc_gl_journal_entry_m_share_account_transaction` FOREIGN KEY (`share_transaction_id`) REFERENCES `m_share_account_transactions` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.acc_gl_journal_entry: ~0 rows (approximately) /*!40000 ALTER TABLE `acc_gl_journal_entry` DISABLE KEYS */; @@ -246,19 +246,19 @@ CREATE TABLE IF NOT EXISTS `acc_gl_journal_entry` ( -- Dumping structure for table mifostenant-reference.acc_product_mapping DROP TABLE IF EXISTS `acc_product_mapping`; CREATE TABLE IF NOT EXISTS `acc_product_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `gl_account_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `product_type` smallint(5) DEFAULT NULL, - `payment_type` int(11) DEFAULT NULL, - `charge_id` bigint(20) DEFAULT NULL, - `financial_account_type` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `gl_account_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `product_type` SMALLINT DEFAULT NULL, + `payment_type` INT DEFAULT NULL, + `charge_id` BIGINT DEFAULT NULL, + `financial_account_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_acc_product_mapping_m_code_value` (`payment_type`), KEY `FK_acc_product_mapping_m_charge` (`charge_id`), CONSTRAINT `FK_acc_product_mapping_m_charge` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `FK_acc_product_mapping_m_payment_type` FOREIGN KEY (`payment_type`) REFERENCES `m_payment_type` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.acc_product_mapping: ~18 rows (approximately) /*!40000 ALTER TABLE `acc_product_mapping` DISABLE KEYS */; @@ -287,10 +287,10 @@ INSERT INTO `acc_product_mapping` (`id`, `gl_account_id`, `product_id`, `product -- Dumping structure for table mifostenant-reference.acc_rule_tags DROP TABLE IF EXISTS `acc_rule_tags`; CREATE TABLE IF NOT EXISTS `acc_rule_tags` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `acc_rule_id` bigint(20) NOT NULL, - `tag_id` int(11) NOT NULL, - `acc_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `acc_rule_id` BIGINT NOT NULL, + `tag_id` INT NOT NULL, + `acc_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNIQUE_ACCOUNT_RULE_TAGS` (`acc_rule_id`,`tag_id`,`acc_type_enum`), KEY `FK_acc_accounting_rule_id` (`acc_rule_id`), @@ -307,12 +307,12 @@ CREATE TABLE IF NOT EXISTS `acc_rule_tags` ( -- Dumping structure for table mifostenant-reference.c_account_number_format DROP TABLE IF EXISTS `c_account_number_format`; CREATE TABLE IF NOT EXISTS `c_account_number_format` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_type_enum` smallint(1) NOT NULL, - `prefix_type_enum` smallint(2) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_type_enum` SMALLINT NOT NULL, + `prefix_type_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `account_type_enum` (`account_type_enum`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.c_account_number_format: ~0 rows (approximately) /*!40000 ALTER TABLE `c_account_number_format` DISABLE KEYS */; @@ -322,10 +322,10 @@ CREATE TABLE IF NOT EXISTS `c_account_number_format` ( -- Dumping structure for table mifostenant-reference.c_cache DROP TABLE IF EXISTS `c_cache`; CREATE TABLE IF NOT EXISTS `c_cache` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cache_type_enum` tinyint(1) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `cache_type_enum` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.c_cache: ~0 rows (approximately) /*!40000 ALTER TABLE `c_cache` DISABLE KEYS */; @@ -337,16 +337,16 @@ INSERT INTO `c_cache` (`id`, `cache_type_enum`) VALUES -- Dumping structure for table mifostenant-reference.c_configuration DROP TABLE IF EXISTS `c_configuration`; CREATE TABLE IF NOT EXISTS `c_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, - `value` int(11) DEFAULT NULL, + `value` INT DEFAULT NULL, `date_value` date DEFAULT NULL, - `enabled` tinyint(1) NOT NULL DEFAULT '0', - `is_trap_door` tinyint(1) NOT NULL DEFAULT '0', + `enabled` tinyint NOT NULL DEFAULT '0', + `is_trap_door` tinyint NOT NULL DEFAULT '0', `description` varchar(300) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.c_configuration: ~27 rows (approximately) /*!40000 ALTER TABLE `c_configuration` DISABLE KEYS */; @@ -384,11 +384,11 @@ INSERT INTO `c_configuration` (`id`, `name`, `value`, `date_value`, `enabled`, ` -- Dumping structure for table mifostenant-reference.c_external_service DROP TABLE IF EXISTS `c_external_service`; CREATE TABLE IF NOT EXISTS `c_external_service` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.c_external_service: ~3 rows (approximately) /*!40000 ALTER TABLE `c_external_service` DISABLE KEYS */; @@ -404,10 +404,10 @@ DROP TABLE IF EXISTS `c_external_service_properties`; CREATE TABLE IF NOT EXISTS `c_external_service_properties` ( `name` varchar(150) NOT NULL, `value` varchar(250) DEFAULT NULL, - `external_service_id` bigint(20) NOT NULL, + `external_service_id` BIGINT NOT NULL, KEY `FK_c_external_service_properties_c_external_service` (`external_service_id`), CONSTRAINT `FK_c_external_service_properties_c_external_service` FOREIGN KEY (`external_service_id`) REFERENCES `c_external_service` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.c_external_service_properties: ~12 rows (approximately) /*!40000 ALTER TABLE `c_external_service_properties` DISABLE KEYS */; @@ -430,24 +430,24 @@ INSERT INTO `c_external_service_properties` (`name`, `value`, `external_service_ -- Dumping structure for table mifostenant-reference.job DROP TABLE IF EXISTS `job`; CREATE TABLE IF NOT EXISTS `job` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `display_name` varchar(100) NOT NULL, `cron_expression` varchar(20) CHARACTER SET latin1 NOT NULL, `create_time` datetime NOT NULL, - `task_priority` smallint(6) NOT NULL DEFAULT '5', + `task_priority` SMALLINT NOT NULL DEFAULT '5', `group_name` varchar(50) CHARACTER SET latin1 DEFAULT NULL, `previous_run_start_time` datetime DEFAULT NULL, `next_run_time` datetime DEFAULT NULL, `job_key` varchar(500) DEFAULT NULL, `initializing_errorlog` text, - `is_active` tinyint(1) NOT NULL DEFAULT '1', - `currently_running` tinyint(1) NOT NULL DEFAULT '0', - `updates_allowed` tinyint(1) NOT NULL DEFAULT '1', - `scheduler_group` smallint(2) NOT NULL DEFAULT '0', - `is_misfired` tinyint(1) NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL DEFAULT '1', + `currently_running` tinyint NOT NULL DEFAULT '0', + `updates_allowed` tinyint NOT NULL DEFAULT '1', + `scheduler_group` SMALLINT NOT NULL DEFAULT '0', + `is_misfired` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.job: ~26 rows (approximately) /*!40000 ALTER TABLE `job` DISABLE KEYS */; @@ -484,9 +484,9 @@ INSERT INTO `job` (`id`, `name`, `display_name`, `cron_expression`, `create_time -- Dumping structure for table mifostenant-reference.job_run_history DROP TABLE IF EXISTS `job_run_history`; CREATE TABLE IF NOT EXISTS `job_run_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `job_id` bigint(20) NOT NULL, - `version` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `job_id` BIGINT NOT NULL, + `version` BIGINT NOT NULL, `start_time` datetime NOT NULL, `end_time` datetime NOT NULL, `status` varchar(10) CHARACTER SET latin1 NOT NULL, @@ -496,7 +496,7 @@ CREATE TABLE IF NOT EXISTS `job_run_history` ( PRIMARY KEY (`id`), KEY `scheduledjobsFK` (`job_id`), CONSTRAINT `scheduledjobsFK` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.job_run_history: ~18 rows (approximately) /*!40000 ALTER TABLE `job_run_history` DISABLE KEYS */; @@ -525,15 +525,15 @@ INSERT INTO `job_run_history` (`id`, `job_id`, `version`, `start_time`, `end_tim -- Dumping structure for table mifostenant-reference.mix_taxonomy DROP TABLE IF EXISTS `mix_taxonomy`; CREATE TABLE IF NOT EXISTS `mix_taxonomy` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, - `namespace_id` int(11) DEFAULT NULL, + `namespace_id` INT DEFAULT NULL, `dimension` varchar(100) DEFAULT NULL, - `type` int(11) DEFAULT NULL, + `type` INT DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, - `need_mapping` tinyint(1) DEFAULT NULL, + `need_mapping` tinyint DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.mix_taxonomy: ~48 rows (approximately) /*!40000 ALTER TABLE `mix_taxonomy` DISABLE KEYS */; @@ -592,13 +592,13 @@ INSERT INTO `mix_taxonomy` (`id`, `name`, `namespace_id`, `dimension`, `type`, ` -- Dumping structure for table mifostenant-reference.mix_taxonomy_mapping DROP TABLE IF EXISTS `mix_taxonomy_mapping`; CREATE TABLE IF NOT EXISTS `mix_taxonomy_mapping` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `identifier` varchar(50) NOT NULL DEFAULT '', `config` varchar(200) DEFAULT NULL, `last_update_date` datetime DEFAULT NULL, `currency` varchar(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.mix_taxonomy_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `mix_taxonomy_mapping` DISABLE KEYS */; @@ -610,39 +610,39 @@ INSERT INTO `mix_taxonomy_mapping` (`id`, `identifier`, `config`, `last_update_d -- Dumping structure for table mifostenant-reference.mix_xbrl_namespace DROP TABLE IF EXISTS `mix_xbrl_namespace`; CREATE TABLE IF NOT EXISTS `mix_xbrl_namespace` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id` INT unsigned NOT NULL AUTO_INCREMENT, `prefix` varchar(20) NOT NULL DEFAULT '', `url` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNQUE` (`prefix`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.mix_xbrl_namespace: ~7 rows (approximately) /*!40000 ALTER TABLE `mix_xbrl_namespace` DISABLE KEYS */; INSERT INTO `mix_xbrl_namespace` (`id`, `prefix`, `url`) VALUES (1, 'ifrs', 'http://xbrl.iasb.org/taxonomy/2009-04-01/ifrs'), (2, 'iso4217', 'http://www.xbrl.org/2003/iso4217'), - (3, 'mix', 'http://www.themix.org/int/fr/ifrs/basi/YYYY-MM-DD/mx-cor'), + (3, 'mix', 'http://www.themix.org/INT/fr/ifrs/basi/YYYY-MM-DD/mx-cor'), (4, 'xbrldi', 'http://xbrl.org/2006/xbrldi'), (5, 'xbrli', 'http://www.xbrl.org/2003/instance'), (6, 'link', 'http://www.xbrl.org/2003/linkbase'), - (7, 'dc-all', 'http://www.themix.org/int/fr/ifrs/basi/2010-08-31/dc-all'); + (7, 'dc-all', 'http://www.themix.org/INT/fr/ifrs/basi/2010-08-31/dc-all'); /*!40000 ALTER TABLE `mix_xbrl_namespace` ENABLE KEYS */; -- Dumping structure for table mifostenant-reference.m_account_transfer_details DROP TABLE IF EXISTS `m_account_transfer_details`; CREATE TABLE IF NOT EXISTS `m_account_transfer_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) NOT NULL, - `to_office_id` bigint(20) NOT NULL, - `from_client_id` bigint(20) DEFAULT NULL, - `to_client_id` bigint(20) DEFAULT NULL, - `from_savings_account_id` bigint(20) DEFAULT NULL, - `to_savings_account_id` bigint(20) DEFAULT NULL, - `from_loan_account_id` bigint(20) DEFAULT NULL, - `to_loan_account_id` bigint(20) DEFAULT NULL, - `transfer_type` smallint(2) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT NOT NULL, + `to_office_id` BIGINT NOT NULL, + `from_client_id` BIGINT DEFAULT NULL, + `to_client_id` BIGINT DEFAULT NULL, + `from_savings_account_id` BIGINT DEFAULT NULL, + `to_savings_account_id` BIGINT DEFAULT NULL, + `from_loan_account_id` BIGINT DEFAULT NULL, + `to_loan_account_id` BIGINT DEFAULT NULL, + `transfer_type` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_account_transfer_details_from_office` (`from_office_id`), KEY `FK_m_account_transfer_details_to_office` (`to_office_id`), @@ -660,7 +660,7 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_details` ( CONSTRAINT `FK_m_account_transfer_details_to_loan_account` FOREIGN KEY (`to_loan_account_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_m_account_transfer_details_to_office` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK_m_account_transfer_details_to_savings_account` FOREIGN KEY (`to_savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_account_transfer_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_account_transfer_details` DISABLE KEYS */; @@ -670,26 +670,26 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_details` ( -- Dumping structure for table mifostenant-reference.m_account_transfer_standing_instructions DROP TABLE IF EXISTS `m_account_transfer_standing_instructions`; CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(250) NOT NULL, - `account_transfer_details_id` bigint(20) NOT NULL, - `priority` tinyint(2) NOT NULL, - `status` tinyint(2) NOT NULL, - `instruction_type` tinyint(2) NOT NULL, + `account_transfer_details_id` BIGINT NOT NULL, + `priority` TINYINT NOT NULL, + `status` TINYINT NOT NULL, + `instruction_type` TINYINT NOT NULL, `amount` decimal(19,6) DEFAULT NULL, `valid_from` date NOT NULL, `valid_till` date DEFAULT NULL, - `recurrence_type` tinyint(1) NOT NULL, - `recurrence_frequency` smallint(5) DEFAULT NULL, - `recurrence_interval` smallint(5) DEFAULT NULL, - `recurrence_on_day` smallint(2) DEFAULT NULL, - `recurrence_on_month` smallint(2) DEFAULT NULL, + `recurrence_type` tinyint NOT NULL, + `recurrence_frequency` SMALLINT DEFAULT NULL, + `recurrence_interval` SMALLINT DEFAULT NULL, + `recurrence_on_day` SMALLINT DEFAULT NULL, + `recurrence_on_month` SMALLINT DEFAULT NULL, `last_run_date` date DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `FK_m_standing_instructions_account_transfer_details` (`account_transfer_details_id`), CONSTRAINT `FK_m_standing_instructions_account_transfer_details` FOREIGN KEY (`account_transfer_details_id`) REFERENCES `m_account_transfer_details` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_account_transfer_standing_instructions: ~0 rows (approximately) /*!40000 ALTER TABLE `m_account_transfer_standing_instructions` DISABLE KEYS */; @@ -699,8 +699,8 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions` ( -- Dumping structure for table mifostenant-reference.m_account_transfer_standing_instructions_history DROP TABLE IF EXISTS `m_account_transfer_standing_instructions_history`; CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `standing_instruction_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `standing_instruction_id` BIGINT NOT NULL, `status` varchar(20) NOT NULL, `execution_time` datetime NOT NULL, `amount` decimal(19,6) NOT NULL, @@ -708,7 +708,7 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions_history` ( PRIMARY KEY (`id`), KEY `FK_m_account_transfer_standing_instructions_history` (`standing_instruction_id`), CONSTRAINT `FK_m_account_transfer_standing_instructions_m_history` FOREIGN KEY (`standing_instruction_id`) REFERENCES `m_account_transfer_standing_instructions` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_account_transfer_standing_instructions_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_account_transfer_standing_instructions_history` DISABLE KEYS */; @@ -718,17 +718,17 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_standing_instructions_history` ( -- Dumping structure for table mifostenant-reference.m_account_transfer_transaction DROP TABLE IF EXISTS `m_account_transfer_transaction`; CREATE TABLE IF NOT EXISTS `m_account_transfer_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_transfer_details_id` bigint(20) NOT NULL, - `from_savings_transaction_id` bigint(20) DEFAULT NULL, - `from_loan_transaction_id` bigint(20) DEFAULT NULL, - `to_savings_transaction_id` bigint(20) DEFAULT NULL, - `to_loan_transaction_id` bigint(20) DEFAULT NULL, - `is_reversed` tinyint(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_transfer_details_id` BIGINT NOT NULL, + `from_savings_transaction_id` BIGINT DEFAULT NULL, + `from_loan_transaction_id` BIGINT DEFAULT NULL, + `to_savings_transaction_id` BIGINT DEFAULT NULL, + `to_loan_transaction_id` BIGINT DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `transaction_date` date NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `amount` decimal(19,6) NOT NULL, `description` varchar(200) NOT NULL, PRIMARY KEY (`id`), @@ -742,7 +742,7 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_transaction` ( CONSTRAINT `FK_m_account_transfer_transaction_from_m_savings_transaction` FOREIGN KEY (`from_savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`), CONSTRAINT `FK_m_account_transfer_transaction_to_m_loan_transaction` FOREIGN KEY (`to_loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`), CONSTRAINT `FK_m_account_transfer_transaction_to_m_savings_transaction` FOREIGN KEY (`to_savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_account_transfer_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_account_transfer_transaction` DISABLE KEYS */; @@ -752,7 +752,7 @@ CREATE TABLE IF NOT EXISTS `m_account_transfer_transaction` ( -- Dumping structure for table mifostenant-reference.m_address DROP TABLE IF EXISTS `m_address`; CREATE TABLE IF NOT EXISTS `m_address` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `street` varchar(100) DEFAULT NULL, `address_line_1` varchar(100) DEFAULT NULL, `address_line_2` varchar(100) DEFAULT NULL, @@ -760,11 +760,11 @@ CREATE TABLE IF NOT EXISTS `m_address` ( `town_village` varchar(100) DEFAULT NULL, `city` varchar(100) DEFAULT NULL, `county_district` varchar(100) DEFAULT NULL, - `state_province_id` int(11) DEFAULT NULL, - `country_id` int(11) DEFAULT NULL, + `state_province_id` INT DEFAULT NULL, + `country_id` INT DEFAULT NULL, `postal_code` varchar(10) DEFAULT NULL, - `latitude` decimal(10,8) unsigned DEFAULT '0.00000000', - `longitude` decimal(10,8) unsigned DEFAULT '0.00000000', + `latitude` decimal(10,8) DEFAULT '0.00000000', + `longitude` decimal(10,8) DEFAULT '0.00000000', `created_by` varchar(100) DEFAULT NULL, `created_on` date DEFAULT NULL, `updated_by` varchar(100) DEFAULT NULL, @@ -774,7 +774,7 @@ CREATE TABLE IF NOT EXISTS `m_address` ( KEY `address_fields_codefk2` (`country_id`), CONSTRAINT `address_fields_codefk1` FOREIGN KEY (`state_province_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `address_fields_codefk2` FOREIGN KEY (`country_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_address: ~0 rows (approximately) /*!40000 ALTER TABLE `m_address` DISABLE KEYS */; @@ -784,10 +784,10 @@ CREATE TABLE IF NOT EXISTS `m_address` ( -- Dumping structure for table mifostenant-reference.m_appuser DROP TABLE IF EXISTS `m_appuser`; CREATE TABLE IF NOT EXISTS `m_appuser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_deleted` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT DEFAULT NULL, `username` varchar(100) NOT NULL, `firstname` varchar(100) NOT NULL, `lastname` varchar(100) NOT NULL, @@ -799,7 +799,7 @@ CREATE TABLE IF NOT EXISTS `m_appuser` ( `nonexpired_credentials` bit(1) NOT NULL, `enabled` bit(1) NOT NULL, `last_time_password_updated` date NOT NULL, - `password_never_expires` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'define if the password, should be check for validity period or not', + `password_never_expires` TINYINT NOT NULL DEFAULT '0' COMMENT 'define if the password, should be check for validity period or not', `is_self_service_user` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`id`), UNIQUE KEY `username_org` (`username`), @@ -808,7 +808,7 @@ CREATE TABLE IF NOT EXISTS `m_appuser` ( KEY `last_time_password_updated` (`last_time_password_updated`), CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `fk_m_appuser_002` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_appuser: ~5 rows (approximately) /*!40000 ALTER TABLE `m_appuser` DISABLE KEYS */; @@ -824,8 +824,8 @@ INSERT INTO `m_appuser` (`id`, `is_deleted`, `office_id`, `staff_id`, `username` -- Dumping structure for table mifostenant-reference.m_appuser_previous_password DROP TABLE IF EXISTS `m_appuser_previous_password`; CREATE TABLE IF NOT EXISTS `m_appuser_previous_password` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `user_id` BIGINT NOT NULL, `password` varchar(255) NOT NULL, `removal_date` date NOT NULL, PRIMARY KEY (`id`), @@ -841,14 +841,14 @@ CREATE TABLE IF NOT EXISTS `m_appuser_previous_password` ( -- Dumping structure for table mifostenant-reference.m_appuser_role DROP TABLE IF EXISTS `m_appuser_role`; CREATE TABLE IF NOT EXISTS `m_appuser_role` ( - `appuser_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, + `role_id` BIGINT NOT NULL, PRIMARY KEY (`appuser_id`,`role_id`), KEY `FK7662CE59B4100309` (`appuser_id`), KEY `FK7662CE5915CEC7AB` (`role_id`), CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`), CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_appuser_role: ~4 rows (approximately) /*!40000 ALTER TABLE `m_appuser_role` DISABLE KEYS */; @@ -863,26 +863,26 @@ INSERT INTO `m_appuser_role` (`appuser_id`, `role_id`) VALUES -- Dumping structure for table mifostenant-reference.m_calendar DROP TABLE IF EXISTS `m_calendar`; CREATE TABLE IF NOT EXISTS `m_calendar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `title` varchar(70) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, `meeting_time` time DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_calendar: ~0 rows (approximately) /*!40000 ALTER TABLE `m_calendar` DISABLE KEYS */; @@ -892,20 +892,20 @@ CREATE TABLE IF NOT EXISTS `m_calendar` ( -- Dumping structure for table mifostenant-reference.m_calendar_history DROP TABLE IF EXISTS `m_calendar_history`; CREATE TABLE IF NOT EXISTS `m_calendar_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, `title` varchar(70) NOT NULL, `description` varchar(100) DEFAULT NULL, `location` varchar(50) DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `duration` smallint(6) DEFAULT NULL, - `calendar_type_enum` smallint(5) NOT NULL, - `repeating` tinyint(1) NOT NULL DEFAULT '0', + `duration` SMALLINT DEFAULT NULL, + `calendar_type_enum` SMALLINT NOT NULL, + `repeating` tinyint NOT NULL DEFAULT '0', `recurrence` varchar(100) DEFAULT NULL, - `remind_by_enum` smallint(5) DEFAULT NULL, - `first_reminder` smallint(11) DEFAULT NULL, - `second_reminder` smallint(11) DEFAULT NULL, + `remind_by_enum` SMALLINT DEFAULT NULL, + `first_reminder` smallint DEFAULT NULL, + `second_reminder` smallint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_history` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_history` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) @@ -919,14 +919,14 @@ CREATE TABLE IF NOT EXISTS `m_calendar_history` ( -- Dumping structure for table mifostenant-reference.m_calendar_instance DROP TABLE IF EXISTS `m_calendar_instance`; CREATE TABLE IF NOT EXISTS `m_calendar_instance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_id` bigint(20) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `entity_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_id` BIGINT NOT NULL, + `entity_id` BIGINT NOT NULL, + `entity_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`), CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_calendar_instance: ~0 rows (approximately) /*!40000 ALTER TABLE `m_calendar_instance` DISABLE KEYS */; @@ -936,21 +936,21 @@ CREATE TABLE IF NOT EXISTS `m_calendar_instance` ( -- Dumping structure for table mifostenant-reference.m_cashiers DROP TABLE IF EXISTS `m_cashiers`; CREATE TABLE IF NOT EXISTS `m_cashiers` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `staff_id` bigint(20) DEFAULT NULL, - `teller_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `staff_id` BIGINT DEFAULT NULL, + `teller_id` BIGINT DEFAULT NULL, `description` varchar(100) DEFAULT NULL, `start_date` date DEFAULT NULL, `end_date` date DEFAULT NULL, `start_time` varchar(10) DEFAULT NULL, `end_time` varchar(10) DEFAULT NULL, - `full_day` tinyint(4) DEFAULT NULL, + `full_day` TINYINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `IK_m_cashiers_m_staff` (`staff_id`), KEY `IK_m_cashiers_m_teller` (`teller_id`), CONSTRAINT `FK_m_cashiers_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`), CONSTRAINT `FK_m_cashiers_m_teller` FOREIGN KEY (`teller_id`) REFERENCES `m_tellers` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_cashiers: ~0 rows (approximately) /*!40000 ALTER TABLE `m_cashiers` DISABLE KEYS */; @@ -960,20 +960,20 @@ CREATE TABLE IF NOT EXISTS `m_cashiers` ( -- Dumping structure for table mifostenant-reference.m_cashier_transactions DROP TABLE IF EXISTS `m_cashier_transactions`; CREATE TABLE IF NOT EXISTS `m_cashier_transactions` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cashier_id` bigint(20) NOT NULL, - `txn_type` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `cashier_id` BIGINT NOT NULL, + `txn_type` SMALLINT NOT NULL, `txn_amount` decimal(19,6) NOT NULL, `txn_date` date NOT NULL, `created_date` datetime NOT NULL, `entity_type` varchar(50) DEFAULT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `entity_id` BIGINT DEFAULT NULL, `txn_note` varchar(200) DEFAULT NULL, `currency_code` varchar(3) DEFAULT NULL, PRIMARY KEY (`id`), KEY `IK_m_teller_transactions_m_cashier` (`cashier_id`), CONSTRAINT `FK_m_teller_transactions_m_cashiers` FOREIGN KEY (`cashier_id`) REFERENCES `m_cashiers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_cashier_transactions: ~0 rows (approximately) /*!40000 ALTER TABLE `m_cashier_transactions` DISABLE KEYS */; @@ -983,32 +983,32 @@ CREATE TABLE IF NOT EXISTS `m_cashier_transactions` ( -- Dumping structure for table mifostenant-reference.m_charge DROP TABLE IF EXISTS `m_charge`; CREATE TABLE IF NOT EXISTS `m_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `charge_applies_to_enum` smallint(5) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, - `charge_payment_mode_enum` smallint(5) DEFAULT NULL, + `charge_applies_to_enum` SMALLINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, + `charge_payment_mode_enum` SMALLINT DEFAULT NULL, `amount` decimal(19,6) NOT NULL, - `fee_on_day` smallint(5) DEFAULT NULL, - `fee_interval` smallint(5) DEFAULT NULL, - `fee_on_month` smallint(5) DEFAULT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL, - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `fee_on_day` SMALLINT DEFAULT NULL, + `fee_interval` SMALLINT DEFAULT NULL, + `fee_on_month` SMALLINT DEFAULT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL, + `is_deleted` tinyint NOT NULL DEFAULT '0', `min_cap` decimal(19,6) DEFAULT NULL, `max_cap` decimal(19,6) DEFAULT NULL, - `fee_frequency` smallint(5) DEFAULT NULL, - `income_or_liability_account_id` bigint(20) DEFAULT NULL, - `tax_group_id` bigint(20) DEFAULT NULL, + `fee_frequency` SMALLINT DEFAULT NULL, + `income_or_liability_account_id` BIGINT DEFAULT NULL, + `tax_group_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `FK_m_charge_acc_gl_account` (`income_or_liability_account_id`), KEY `FK_m_charge_m_tax_group` (`tax_group_id`), CONSTRAINT `FK_m_charge_acc_gl_account` FOREIGN KEY (`income_or_liability_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_m_charge_m_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_charge` DISABLE KEYS */; @@ -1020,48 +1020,48 @@ INSERT INTO `m_charge` (`id`, `name`, `currency_code`, `charge_applies_to_enum`, -- Dumping structure for table mifostenant-reference.m_client DROP TABLE IF EXISTS `m_client`; CREATE TABLE IF NOT EXISTS `m_client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `status_enum` int(5) NOT NULL DEFAULT '300', - `sub_status` int(11) DEFAULT NULL, + `status_enum` INT NOT NULL DEFAULT '300', + `sub_status` INT DEFAULT NULL, `activation_date` date DEFAULT NULL, `office_joining_date` date DEFAULT NULL, - `office_id` bigint(20) NOT NULL, - `transfer_to_office_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT NOT NULL, + `transfer_to_office_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `middlename` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `fullname` varchar(100) DEFAULT NULL, `display_name` varchar(100) NOT NULL, `mobile_no` varchar(50) DEFAULT NULL, - `gender_cv_id` int(11) DEFAULT NULL, + `gender_cv_id` INT DEFAULT NULL, `date_of_birth` date DEFAULT NULL, - `image_id` bigint(20) DEFAULT NULL, - `closure_reason_cv_id` int(11) DEFAULT NULL, + `image_id` BIGINT DEFAULT NULL, + `closure_reason_cv_id` INT DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `updated_by` bigint(20) DEFAULT NULL, + `updated_by` BIGINT DEFAULT NULL, `updated_on` date DEFAULT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, - `activatedon_userid` bigint(20) DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, - `default_savings_product` bigint(20) DEFAULT NULL, - `default_savings_account` bigint(20) DEFAULT NULL, - `client_type_cv_id` int(11) DEFAULT NULL, - `client_classification_cv_id` int(11) DEFAULT NULL, - `reject_reason_cv_id` int(11) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, + `activatedon_userid` BIGINT DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, + `default_savings_product` BIGINT DEFAULT NULL, + `default_savings_account` BIGINT DEFAULT NULL, + `client_type_cv_id` INT DEFAULT NULL, + `client_classification_cv_id` INT DEFAULT NULL, + `reject_reason_cv_id` INT DEFAULT NULL, `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, - `withdraw_reason_cv_id` int(11) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, + `withdraw_reason_cv_id` INT DEFAULT NULL, `withdrawn_on_date` date DEFAULT NULL, - `withdraw_on_userid` bigint(20) DEFAULT NULL, + `withdraw_on_userid` BIGINT DEFAULT NULL, `reactivated_on_date` date DEFAULT NULL, - `reactivated_on_userid` bigint(20) DEFAULT NULL, - `legal_form_enum` int(5) DEFAULT NULL, + `reactivated_on_userid` BIGINT DEFAULT NULL, + `legal_form_enum` INT DEFAULT NULL, `reopened_on_date` date DEFAULT NULL, - `reopened_by_userid` bigint(20) DEFAULT NULL, + `reopened_by_userid` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `account_no_UNIQUE` (`account_no`), UNIQUE KEY `external_id` (`external_id`), @@ -1092,7 +1092,7 @@ CREATE TABLE IF NOT EXISTS `m_client` ( CONSTRAINT `FK_m_client_type_m_code_value` FOREIGN KEY (`client_type_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_client_type_m_code_value_withdraw` FOREIGN KEY (`withdraw_reason_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_client_type_mcode_value_reject` FOREIGN KEY (`reject_reason_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_client: ~7 rows (approximately) /*!40000 ALTER TABLE `m_client` DISABLE KEYS */; @@ -1110,18 +1110,18 @@ INSERT INTO `m_client` (`id`, `account_no`, `external_id`, `status_enum`, `sub_s -- Dumping structure for table mifostenant-reference.m_client_address DROP TABLE IF EXISTS `m_client_address`; CREATE TABLE IF NOT EXISTS `m_client_address` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL DEFAULT '0', - `address_id` bigint(20) NOT NULL DEFAULT '0', - `address_type_id` int(11) NOT NULL DEFAULT '0', - `is_active` tinyint(4) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL DEFAULT '0', + `address_id` BIGINT NOT NULL DEFAULT '0', + `address_type_id` INT NOT NULL DEFAULT '0', + `is_active` TINYINT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `addressIdFk` (`address_id`), KEY `address_codefk` (`address_type_id`), KEY `clientaddressfk` (`client_id`), CONSTRAINT `address_codefk` FOREIGN KEY (`address_type_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `clientaddressfk` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_client_address: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_address` DISABLE KEYS */; @@ -1131,16 +1131,16 @@ CREATE TABLE IF NOT EXISTS `m_client_address` ( -- Dumping structure for table mifostenant-reference.m_client_attendance DROP TABLE IF EXISTS `m_client_attendance`; CREATE TABLE IF NOT EXISTS `m_client_attendance` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL DEFAULT '0', - `meeting_id` bigint(20) NOT NULL, - `attendance_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL DEFAULT '0', + `meeting_id` BIGINT NOT NULL, + `attendance_type_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_client_meeting_attendance` (`client_id`,`meeting_id`), KEY `FK_m_meeting_m_client_attendance` (`meeting_id`), CONSTRAINT `FK_m_client_m_client_attendance` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_meeting_m_client_attendance` FOREIGN KEY (`meeting_id`) REFERENCES `m_meeting` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_client_attendance: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_attendance` DISABLE KEYS */; @@ -1150,28 +1150,28 @@ CREATE TABLE IF NOT EXISTS `m_client_attendance` ( -- Dumping structure for table mifostenant-reference.m_client_charge DROP TABLE IF EXISTS `m_client_charge`; CREATE TABLE IF NOT EXISTS `m_client_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, `charge_due_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `amount_paid_derived` decimal(19,6) DEFAULT NULL, `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL, - `is_paid_derived` tinyint(1) DEFAULT NULL, - `waived` tinyint(1) DEFAULT NULL, - `is_active` tinyint(1) DEFAULT NULL, + `is_paid_derived` tinyint DEFAULT NULL, + `waived` tinyint DEFAULT NULL, + `is_active` tinyint DEFAULT NULL, `inactivated_on_date` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_client_charge_m_client` (`client_id`), KEY `FK_m_client_charge_m_charge` (`charge_id`), CONSTRAINT `FK_m_client_charge_m_charge` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `FK_m_client_charge_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_client_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_charge` DISABLE KEYS */; @@ -1181,16 +1181,16 @@ CREATE TABLE IF NOT EXISTS `m_client_charge` ( -- Dumping structure for table mifostenant-reference.m_client_charge_paid_by DROP TABLE IF EXISTS `m_client_charge_paid_by`; CREATE TABLE IF NOT EXISTS `m_client_charge_paid_by` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_transaction_id` bigint(20) NOT NULL, - `client_charge_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_transaction_id` BIGINT NOT NULL, + `client_charge_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_client_charge_paid_by_m_client_transaction` (`client_transaction_id`), KEY `FK_m_client_charge_paid_by_m_client_charge` (`client_charge_id`), CONSTRAINT `FK_m_client_charge_paid_by_m_client_charge` FOREIGN KEY (`client_charge_id`) REFERENCES `m_client_charge` (`id`), CONSTRAINT `FK_m_client_charge_paid_by_m_client_transaction` FOREIGN KEY (`client_transaction_id`) REFERENCES `m_client_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_client_charge_paid_by: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_charge_paid_by` DISABLE KEYS */; @@ -1200,15 +1200,15 @@ CREATE TABLE IF NOT EXISTS `m_client_charge_paid_by` ( -- Dumping structure for table mifostenant-reference.m_client_identifier DROP TABLE IF EXISTS `m_client_identifier`; CREATE TABLE IF NOT EXISTS `m_client_identifier` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `document_type_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `document_type_id` INT NOT NULL, `document_key` varchar(50) NOT NULL, - `status` int(5) NOT NULL DEFAULT '300', - `active` int(5) DEFAULT NULL, + `status` INT NOT NULL DEFAULT '300', + `active` INT DEFAULT NULL, `description` varchar(500) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), @@ -1218,7 +1218,7 @@ CREATE TABLE IF NOT EXISTS `m_client_identifier` ( KEY `FK_m_client_document_m_code_value` (`document_type_id`), CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_client_identifier: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_identifier` DISABLE KEYS */; @@ -1228,18 +1228,18 @@ CREATE TABLE IF NOT EXISTS `m_client_identifier` ( -- Dumping structure for table mifostenant-reference.m_client_non_person DROP TABLE IF EXISTS `m_client_non_person`; CREATE TABLE IF NOT EXISTS `m_client_non_person` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `constitution_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `constitution_cv_id` INT NOT NULL, `incorp_no` varchar(50) DEFAULT NULL, `incorp_validity_till` datetime DEFAULT NULL, - `main_business_line_cv_id` int(11) DEFAULT NULL, + `main_business_line_cv_id` INT DEFAULT NULL, `remarks` varchar(150) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `client_id` (`client_id`), KEY `FK_client_id` (`client_id`), CONSTRAINT `FK_client_id` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_client_non_person: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_non_person` DISABLE KEYS */; @@ -1249,25 +1249,25 @@ CREATE TABLE IF NOT EXISTS `m_client_non_person` ( -- Dumping structure for table mifostenant-reference.m_client_transaction DROP TABLE IF EXISTS `m_client_transaction`; CREATE TABLE IF NOT EXISTS `m_client_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `payment_detail_id` bigint(20) DEFAULT NULL, - `is_reversed` tinyint(1) NOT NULL, + `payment_detail_id` BIGINT DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `external_id` varchar(50) DEFAULT NULL, `transaction_date` date NOT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, `created_date` datetime NOT NULL, - `appuser_id` bigint(20) NOT NULL, + `appuser_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `external_id` (`external_id`), KEY `FK_m_client_transaction_m_client` (`client_id`), KEY `FK_m_client_transaction_m_appuser` (`appuser_id`), CONSTRAINT `FK_m_client_transaction_m_appuser` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_client_transaction_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_client_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_client_transaction` DISABLE KEYS */; @@ -1277,12 +1277,12 @@ CREATE TABLE IF NOT EXISTS `m_client_transaction` ( -- Dumping structure for table mifostenant-reference.m_code DROP TABLE IF EXISTS `m_code`; CREATE TABLE IF NOT EXISTS `m_code` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `code_name` varchar(100) DEFAULT NULL, - `is_system_defined` tinyint(1) NOT NULL DEFAULT '0', + `is_system_defined` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_name` (`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_code: ~28 rows (approximately) /*!40000 ALTER TABLE `m_code` DISABLE KEYS */; @@ -1321,19 +1321,19 @@ INSERT INTO `m_code` (`id`, `code_name`, `is_system_defined`) VALUES -- Dumping structure for table mifostenant-reference.m_code_value DROP TABLE IF EXISTS `m_code_value`; CREATE TABLE IF NOT EXISTS `m_code_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `code_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `code_id` INT NOT NULL, `code_value` varchar(100) DEFAULT NULL, `code_description` varchar(500) DEFAULT NULL, - `order_position` int(11) NOT NULL DEFAULT '0', - `code_score` int(11) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', - `is_mandatory` tinyint(1) NOT NULL DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', + `code_score` INT DEFAULT NULL, + `is_active` tinyint NOT NULL DEFAULT '1', + `is_mandatory` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `code_value` (`code_id`,`code_value`), KEY `FKCFCEA42640BE071Z` (`code_id`), CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_code_value: ~27 rows (approximately) /*!40000 ALTER TABLE `m_code_value` DISABLE KEYS */; @@ -1371,16 +1371,16 @@ INSERT INTO `m_code_value` (`id`, `code_id`, `code_value`, `code_description`, ` -- Dumping structure for table mifostenant-reference.m_currency DROP TABLE IF EXISTS `m_currency`; CREATE TABLE IF NOT EXISTS `m_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `decimal_places` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `display_symbol` varchar(10) DEFAULT NULL, `name` varchar(50) NOT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_currency: ~163 rows (approximately) /*!40000 ALTER TABLE `m_currency` DISABLE KEYS */; @@ -1554,17 +1554,17 @@ INSERT INTO `m_currency` (`id`, `code`, `decimal_places`, `currency_multiplesof` -- Dumping structure for table mifostenant-reference.m_deposit_account_on_hold_transaction DROP TABLE IF EXISTS `m_deposit_account_on_hold_transaction`; CREATE TABLE IF NOT EXISTS `m_deposit_account_on_hold_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `transaction_type_enum` smallint(1) NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, - `is_reversed` tinyint(1) NOT NULL DEFAULT '0', + `is_reversed` tinyint NOT NULL DEFAULT '0', `created_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_deposit_on_hold_transaction_m_savings_account` (`savings_account_id`), CONSTRAINT `FK_deposit_on_hold_transaction_m_savings_account` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_deposit_account_on_hold_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_account_on_hold_transaction` DISABLE KEYS */; @@ -1574,19 +1574,19 @@ CREATE TABLE IF NOT EXISTS `m_deposit_account_on_hold_transaction` ( -- Dumping structure for table mifostenant-reference.m_deposit_account_recurring_detail DROP TABLE IF EXISTS `m_deposit_account_recurring_detail`; CREATE TABLE IF NOT EXISTS `m_deposit_account_recurring_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL DEFAULT '0', `mandatory_recommended_deposit_amount` decimal(19,6) DEFAULT NULL, - `is_mandatory` tinyint(4) NOT NULL DEFAULT '0', - `allow_withdrawal` tinyint(4) NOT NULL DEFAULT '0', - `adjust_advance_towards_future_payments` tinyint(4) NOT NULL DEFAULT '1', - `is_calendar_inherited` tinyint(4) NOT NULL DEFAULT '0', + `is_mandatory` TINYINT NOT NULL DEFAULT '0', + `allow_withdrawal` TINYINT NOT NULL DEFAULT '0', + `adjust_advance_towards_future_payments` TINYINT NOT NULL DEFAULT '1', + `is_calendar_inherited` TINYINT NOT NULL DEFAULT '0', `total_overdue_amount` decimal(19,6) DEFAULT NULL, - `no_of_overdue_installments` int(11) DEFAULT NULL, + `no_of_overdue_installments` INT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKDARD00000000000001` (`savings_account_id`), CONSTRAINT `FKDARD00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_deposit_account_recurring_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_account_recurring_detail` DISABLE KEYS */; @@ -1596,29 +1596,29 @@ CREATE TABLE IF NOT EXISTS `m_deposit_account_recurring_detail` ( -- Dumping structure for table mifostenant-reference.m_deposit_account_term_and_preclosure DROP TABLE IF EXISTS `m_deposit_account_term_and_preclosure`; CREATE TABLE IF NOT EXISTS `m_deposit_account_term_and_preclosure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL DEFAULT '0', - `min_deposit_term` int(11) DEFAULT NULL, - `max_deposit_term` int(11) DEFAULT NULL, - `min_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `max_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `in_multiples_of_deposit_term` int(11) DEFAULT NULL, - `in_multiples_of_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `pre_closure_penal_applicable` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL DEFAULT '0', + `min_deposit_term` INT DEFAULT NULL, + `max_deposit_term` INT DEFAULT NULL, + `min_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `max_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `in_multiples_of_deposit_term` INT DEFAULT NULL, + `in_multiples_of_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `pre_closure_penal_applicable` SMALLINT DEFAULT NULL, `pre_closure_penal_interest` decimal(19,6) DEFAULT NULL, - `pre_closure_penal_interest_on_enum` smallint(5) DEFAULT NULL, - `deposit_period` int(11) DEFAULT NULL, - `deposit_period_frequency_enum` smallint(5) DEFAULT NULL, + `pre_closure_penal_interest_on_enum` SMALLINT DEFAULT NULL, + `deposit_period` INT DEFAULT NULL, + `deposit_period_frequency_enum` SMALLINT DEFAULT NULL, `deposit_amount` decimal(19,6) DEFAULT NULL, `maturity_amount` decimal(19,6) DEFAULT NULL, `maturity_date` date DEFAULT NULL, - `on_account_closure_enum` smallint(5) DEFAULT NULL, + `on_account_closure_enum` SMALLINT DEFAULT NULL, `expected_firstdepositon_date` date DEFAULT NULL, - `transfer_interest_to_linked_account` tinyint(1) NOT NULL DEFAULT '0', + `transfer_interest_to_linked_account` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FKDATP00000000000001` (`savings_account_id`), CONSTRAINT `FKDATP00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_deposit_account_term_and_preclosure: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_account_term_and_preclosure` DISABLE KEYS */; @@ -1628,13 +1628,13 @@ CREATE TABLE IF NOT EXISTS `m_deposit_account_term_and_preclosure` ( -- Dumping structure for table mifostenant-reference.m_deposit_product_interest_rate_chart DROP TABLE IF EXISTS `m_deposit_product_interest_rate_chart`; CREATE TABLE IF NOT EXISTS `m_deposit_product_interest_rate_chart` ( - `deposit_product_id` bigint(20) NOT NULL, - `interest_rate_chart_id` bigint(20) NOT NULL, + `deposit_product_id` BIGINT NOT NULL, + `interest_rate_chart_id` BIGINT NOT NULL, UNIQUE KEY `deposit_product_id_interest_rate_chart_id` (`deposit_product_id`,`interest_rate_chart_id`), KEY `FKDPIRC00000000000002` (`interest_rate_chart_id`), CONSTRAINT `FKDPIRC00000000000001` FOREIGN KEY (`deposit_product_id`) REFERENCES `m_savings_product` (`id`), CONSTRAINT `FKDPIRC00000000000002` FOREIGN KEY (`interest_rate_chart_id`) REFERENCES `m_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_deposit_product_interest_rate_chart: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_product_interest_rate_chart` DISABLE KEYS */; @@ -1644,15 +1644,15 @@ CREATE TABLE IF NOT EXISTS `m_deposit_product_interest_rate_chart` ( -- Dumping structure for table mifostenant-reference.m_deposit_product_recurring_detail DROP TABLE IF EXISTS `m_deposit_product_recurring_detail`; CREATE TABLE IF NOT EXISTS `m_deposit_product_recurring_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_product_id` bigint(20) NOT NULL DEFAULT '0', - `is_mandatory` tinyint(1) NOT NULL DEFAULT '1', - `allow_withdrawal` tinyint(1) NOT NULL DEFAULT '0', - `adjust_advance_towards_future_payments` tinyint(1) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_product_id` BIGINT NOT NULL DEFAULT '0', + `is_mandatory` tinyint NOT NULL DEFAULT '1', + `allow_withdrawal` tinyint NOT NULL DEFAULT '0', + `adjust_advance_towards_future_payments` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `FKDPRD00000000000001` (`savings_product_id`), CONSTRAINT `FKDPRD00000000000001` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_deposit_product_recurring_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_product_recurring_detail` DISABLE KEYS */; @@ -1662,24 +1662,24 @@ CREATE TABLE IF NOT EXISTS `m_deposit_product_recurring_detail` ( -- Dumping structure for table mifostenant-reference.m_deposit_product_term_and_preclosure DROP TABLE IF EXISTS `m_deposit_product_term_and_preclosure`; CREATE TABLE IF NOT EXISTS `m_deposit_product_term_and_preclosure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_product_id` bigint(20) NOT NULL DEFAULT '0', - `min_deposit_term` int(11) DEFAULT NULL, - `max_deposit_term` int(11) DEFAULT NULL, - `min_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `max_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `in_multiples_of_deposit_term` int(11) DEFAULT NULL, - `in_multiples_of_deposit_term_type_enum` smallint(5) DEFAULT NULL, - `pre_closure_penal_applicable` smallint(5) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_product_id` BIGINT NOT NULL DEFAULT '0', + `min_deposit_term` INT DEFAULT NULL, + `max_deposit_term` INT DEFAULT NULL, + `min_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `max_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `in_multiples_of_deposit_term` INT DEFAULT NULL, + `in_multiples_of_deposit_term_type_enum` SMALLINT DEFAULT NULL, + `pre_closure_penal_applicable` SMALLINT DEFAULT NULL, `pre_closure_penal_interest` decimal(19,6) DEFAULT NULL, - `pre_closure_penal_interest_on_enum` smallint(5) DEFAULT NULL, + `pre_closure_penal_interest_on_enum` SMALLINT DEFAULT NULL, `min_deposit_amount` decimal(19,6) DEFAULT NULL, `max_deposit_amount` decimal(19,6) DEFAULT NULL, `deposit_amount` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKDPTP00000000000001` (`savings_product_id`), CONSTRAINT `FKDPTP00000000000001` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_deposit_product_term_and_preclosure: ~0 rows (approximately) /*!40000 ALTER TABLE `m_deposit_product_term_and_preclosure` DISABLE KEYS */; @@ -1689,18 +1689,18 @@ CREATE TABLE IF NOT EXISTS `m_deposit_product_term_and_preclosure` ( -- Dumping structure for table mifostenant-reference.m_document DROP TABLE IF EXISTS `m_document`; CREATE TABLE IF NOT EXISTS `m_document` ( - `id` int(20) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parent_entity_type` varchar(50) NOT NULL, - `parent_entity_id` int(20) NOT NULL DEFAULT '0', + `parent_entity_id` INT NOT NULL DEFAULT '0', `name` varchar(250) NOT NULL, `file_name` varchar(250) NOT NULL, - `size` int(20) DEFAULT '0', + `size` INT DEFAULT '0', `type` varchar(500) DEFAULT NULL, `description` varchar(1000) DEFAULT NULL, `location` varchar(500) NOT NULL DEFAULT '0', - `storage_type_enum` smallint(5) DEFAULT NULL, + `storage_type_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_document: ~0 rows (approximately) /*!40000 ALTER TABLE `m_document` DISABLE KEYS */; @@ -1710,18 +1710,18 @@ CREATE TABLE IF NOT EXISTS `m_document` ( -- Dumping structure for table mifostenant-reference.m_entity_datatable_check DROP TABLE IF EXISTS `m_entity_datatable_check`; CREATE TABLE IF NOT EXISTS `m_entity_datatable_check` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `application_table_name` varchar(200) NOT NULL, `x_registered_table_name` varchar(50) NOT NULL, - `status_enum` int(11) NOT NULL, - `system_defined` tinyint(4) NOT NULL DEFAULT '0', - `product_id` bigint(10) DEFAULT NULL, + `status_enum` INT NOT NULL, + `system_defined` TINYINT NOT NULL DEFAULT '0', + `product_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_entity_check` (`application_table_name`,`x_registered_table_name`,`status_enum`,`product_id`), KEY `x_registered_table_name` (`x_registered_table_name`), KEY `product_id` (`product_id`), CONSTRAINT `m_entity_datatable_check_ibfk_1` FOREIGN KEY (`x_registered_table_name`) REFERENCES `x_registered_table` (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_entity_datatable_check: ~0 rows (approximately) /*!40000 ALTER TABLE `m_entity_datatable_check` DISABLE KEYS */; @@ -1731,13 +1731,13 @@ CREATE TABLE IF NOT EXISTS `m_entity_datatable_check` ( -- Dumping structure for table mifostenant-reference.m_entity_relation DROP TABLE IF EXISTS `m_entity_relation`; CREATE TABLE IF NOT EXISTS `m_entity_relation` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_entity_type` int(10) NOT NULL, - `to_entity_type` int(10) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_entity_type` INT NOT NULL, + `to_entity_type` INT NOT NULL, `code_name` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `from_entity_type_to_entity_type_code_name` (`from_entity_type`,`to_entity_type`,`code_name`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_entity_relation: ~5 rows (approximately) /*!40000 ALTER TABLE `m_entity_relation` DISABLE KEYS */; @@ -1753,18 +1753,18 @@ INSERT INTO `m_entity_relation` (`id`, `from_entity_type`, `to_entity_type`, `co -- Dumping structure for table mifostenant-reference.m_entity_to_entity_access DROP TABLE IF EXISTS `m_entity_to_entity_access`; CREATE TABLE IF NOT EXISTS `m_entity_to_entity_access` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `entity_type` varchar(50) NOT NULL, - `entity_id` bigint(20) NOT NULL, - `access_type_code_value_id` int(11) NOT NULL, + `entity_id` BIGINT NOT NULL, + `access_type_code_value_id` INT NOT NULL, `second_entity_type` varchar(50) NOT NULL, - `second_entity_id` bigint(20) NOT NULL, + `second_entity_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id_uniq_m_entity_to_entity_access` (`entity_type`,`entity_id`,`access_type_code_value_id`,`second_entity_type`,`second_entity_id`), KEY `IDX_OFFICE` (`entity_type`,`entity_id`), KEY `FK_access_type_code_m_code_value` (`access_type_code_value_id`), CONSTRAINT `FK_access_type_code_m_code_value` FOREIGN KEY (`access_type_code_value_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_entity_to_entity_access: ~0 rows (approximately) /*!40000 ALTER TABLE `m_entity_to_entity_access` DISABLE KEYS */; @@ -1774,16 +1774,16 @@ CREATE TABLE IF NOT EXISTS `m_entity_to_entity_access` ( -- Dumping structure for table mifostenant-reference.m_entity_to_entity_mapping DROP TABLE IF EXISTS `m_entity_to_entity_mapping`; CREATE TABLE IF NOT EXISTS `m_entity_to_entity_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `rel_id` bigint(20) NOT NULL DEFAULT '0', - `from_id` bigint(20) NOT NULL DEFAULT '0', - `to_id` bigint(20) unsigned NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `rel_id` BIGINT NOT NULL DEFAULT '0', + `from_id` BIGINT NOT NULL DEFAULT '0', + `to_id` BIGINT unsigned NOT NULL, `start_date` date DEFAULT NULL, `end_date` date DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `rel_id_from_id_to_id` (`rel_id`,`from_id`,`to_id`), CONSTRAINT `FK__rel_id_m_entity_relation_id` FOREIGN KEY (`rel_id`) REFERENCES `m_entity_relation` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_entity_to_entity_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_entity_to_entity_mapping` DISABLE KEYS */; @@ -1793,15 +1793,15 @@ CREATE TABLE IF NOT EXISTS `m_entity_to_entity_mapping` ( -- Dumping structure for table mifostenant-reference.m_field_configuration DROP TABLE IF EXISTS `m_field_configuration`; CREATE TABLE IF NOT EXISTS `m_field_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `entity` varchar(100) NOT NULL, `subentity` varchar(100) NOT NULL, `field` varchar(100) NOT NULL, - `is_enabled` tinyint(4) NOT NULL, - `is_mandatory` tinyint(4) NOT NULL, + `is_enabled` TINYINT NOT NULL, + `is_mandatory` TINYINT NOT NULL, `validation_regex` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_field_configuration: ~18 rows (approximately) /*!40000 ALTER TABLE `m_field_configuration` DISABLE KEYS */; @@ -1830,17 +1830,17 @@ INSERT INTO `m_field_configuration` (`id`, `entity`, `subentity`, `field`, `is_e -- Dumping structure for table mifostenant-reference.m_floating_rates DROP TABLE IF EXISTS `m_floating_rates`; CREATE TABLE IF NOT EXISTS `m_floating_rates` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, `is_base_lending_rate` bit(1) NOT NULL DEFAULT b'0', `is_active` bit(1) NOT NULL DEFAULT b'1', - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_floating_rates: ~0 rows (approximately) /*!40000 ALTER TABLE `m_floating_rates` DISABLE KEYS */; @@ -1850,20 +1850,20 @@ CREATE TABLE IF NOT EXISTS `m_floating_rates` ( -- Dumping structure for table mifostenant-reference.m_floating_rates_periods DROP TABLE IF EXISTS `m_floating_rates_periods`; CREATE TABLE IF NOT EXISTS `m_floating_rates_periods` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `floating_rates_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `floating_rates_id` BIGINT NOT NULL, `from_date` datetime NOT NULL, `interest_rate` decimal(19,6) NOT NULL, `is_differential_to_base_lending_rate` bit(1) NOT NULL DEFAULT b'0', `is_active` bit(1) NOT NULL DEFAULT b'1', - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_mappings_m_floating_rates` (`floating_rates_id`), CONSTRAINT `FK_mappings_m_floating_rates` FOREIGN KEY (`floating_rates_id`) REFERENCES `m_floating_rates` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_floating_rates_periods: ~0 rows (approximately) /*!40000 ALTER TABLE `m_floating_rates_periods` DISABLE KEYS */; @@ -1873,13 +1873,13 @@ CREATE TABLE IF NOT EXISTS `m_floating_rates_periods` ( -- Dumping structure for table mifostenant-reference.m_fund DROP TABLE IF EXISTS `m_fund`; CREATE TABLE IF NOT EXISTS `m_fund` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `fund_name_org` (`name`), UNIQUE KEY `fund_externalid_org` (`external_id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_fund: ~0 rows (approximately) /*!40000 ALTER TABLE `m_fund` DISABLE KEYS */; @@ -1891,22 +1891,22 @@ INSERT INTO `m_fund` (`id`, `name`, `external_id`) VALUES -- Dumping structure for table mifostenant-reference.m_group DROP TABLE IF EXISTS `m_group`; CREATE TABLE IF NOT EXISTS `m_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `external_id` varchar(100) DEFAULT NULL, - `status_enum` int(5) NOT NULL DEFAULT '300', + `status_enum` INT NOT NULL DEFAULT '300', `activation_date` date DEFAULT NULL, - `office_id` bigint(20) NOT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `parent_id` bigint(20) DEFAULT NULL, - `level_id` int(11) NOT NULL, + `office_id` BIGINT NOT NULL, + `staff_id` BIGINT DEFAULT NULL, + `parent_id` BIGINT DEFAULT NULL, + `level_id` INT NOT NULL, `display_name` varchar(100) NOT NULL, `hierarchy` varchar(100) DEFAULT NULL, - `closure_reason_cv_id` int(11) DEFAULT NULL, + `closure_reason_cv_id` INT DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `activatedon_userid` bigint(20) DEFAULT NULL, + `activatedon_userid` BIGINT DEFAULT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `account_no` varchar(20) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`display_name`,`level_id`), @@ -1922,7 +1922,7 @@ CREATE TABLE IF NOT EXISTS `m_group` ( CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`), CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_group: ~4 rows (approximately) /*!40000 ALTER TABLE `m_group` DISABLE KEYS */; @@ -1937,13 +1937,13 @@ INSERT INTO `m_group` (`id`, `external_id`, `status_enum`, `activation_date`, `o -- Dumping structure for table mifostenant-reference.m_group_client DROP TABLE IF EXISTS `m_group_client`; CREATE TABLE IF NOT EXISTS `m_group_client` ( - `group_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `group_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`group_id`,`client_id`), KEY `client_id` (`client_id`), CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_group_client: ~6 rows (approximately) /*!40000 ALTER TABLE `m_group_client` DISABLE KEYS */; @@ -1960,16 +1960,16 @@ INSERT INTO `m_group_client` (`group_id`, `client_id`) VALUES -- Dumping structure for table mifostenant-reference.m_group_level DROP TABLE IF EXISTS `m_group_level`; CREATE TABLE IF NOT EXISTS `m_group_level` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `parent_id` int(11) DEFAULT NULL, - `super_parent` tinyint(1) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `parent_id` INT DEFAULT NULL, + `super_parent` tinyint NOT NULL, `level_name` varchar(100) NOT NULL, - `recursable` tinyint(1) NOT NULL, - `can_have_clients` tinyint(1) NOT NULL, + `recursable` tinyint NOT NULL, + `can_have_clients` tinyint NOT NULL, PRIMARY KEY (`id`), KEY `Parent_levelId_reference` (`parent_id`), CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_group_level: ~2 rows (approximately) /*!40000 ALTER TABLE `m_group_level` DISABLE KEYS */; @@ -1982,10 +1982,10 @@ INSERT INTO `m_group_level` (`id`, `parent_id`, `super_parent`, `level_name`, `r -- Dumping structure for table mifostenant-reference.m_group_roles DROP TABLE IF EXISTS `m_group_roles`; CREATE TABLE IF NOT EXISTS `m_group_roles` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `role_cv_id` int(11) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `role_cv_id` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNIQUE_GROUP_ROLES` (`client_id`,`group_id`,`role_cv_id`), KEY `FKGroupRoleClientId` (`client_id`), @@ -1994,7 +1994,7 @@ CREATE TABLE IF NOT EXISTS `m_group_roles` ( CONSTRAINT `FKGroupRoleClientId` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKGroupRoleGroupId` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_grouprole_m_codevalue` FOREIGN KEY (`role_cv_id`) REFERENCES `m_code_value` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_group_roles: ~0 rows (approximately) /*!40000 ALTER TABLE `m_group_roles` DISABLE KEYS */; @@ -2004,11 +2004,11 @@ CREATE TABLE IF NOT EXISTS `m_group_roles` ( -- Dumping structure for table mifostenant-reference.m_guarantor DROP TABLE IF EXISTS `m_guarantor`; CREATE TABLE IF NOT EXISTS `m_guarantor` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `client_reln_cv_id` int(11) DEFAULT NULL, - `type_enum` smallint(5) NOT NULL, - `entity_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `client_reln_cv_id` INT DEFAULT NULL, + `type_enum` SMALLINT NOT NULL, + `entity_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `dob` date DEFAULT NULL, @@ -2021,13 +2021,13 @@ CREATE TABLE IF NOT EXISTS `m_guarantor` ( `house_phone_number` varchar(20) DEFAULT NULL, `mobile_number` varchar(20) DEFAULT NULL, `comment` varchar(500) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `FK_m_guarantor_m_loan` (`loan_id`), KEY `FK_m_guarantor_m_code_value` (`client_reln_cv_id`), CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_guarantor: ~0 rows (approximately) /*!40000 ALTER TABLE `m_guarantor` DISABLE KEYS */; @@ -2037,20 +2037,20 @@ CREATE TABLE IF NOT EXISTS `m_guarantor` ( -- Dumping structure for table mifostenant-reference.m_guarantor_funding_details DROP TABLE IF EXISTS `m_guarantor_funding_details`; CREATE TABLE IF NOT EXISTS `m_guarantor_funding_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `guarantor_id` bigint(20) NOT NULL, - `account_associations_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `guarantor_id` BIGINT NOT NULL, + `account_associations_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, `amount_released_derived` decimal(19,6) DEFAULT NULL, `amount_remaining_derived` decimal(19,6) DEFAULT NULL, `amount_transfered_derived` decimal(19,6) DEFAULT NULL, - `status_enum` smallint(3) NOT NULL, + `status_enum` SMALLINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_guarantor_fund_details_m_guarantor` (`guarantor_id`), KEY `FK_m_guarantor_fund_details_account_associations_id` (`account_associations_id`), CONSTRAINT `FK_m_guarantor_fund_details_account_associations_id` FOREIGN KEY (`account_associations_id`) REFERENCES `m_portfolio_account_associations` (`id`), CONSTRAINT `FK_m_guarantor_fund_details_m_guarantor` FOREIGN KEY (`guarantor_id`) REFERENCES `m_guarantor` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_guarantor_funding_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_guarantor_funding_details` DISABLE KEYS */; @@ -2060,11 +2060,11 @@ CREATE TABLE IF NOT EXISTS `m_guarantor_funding_details` ( -- Dumping structure for table mifostenant-reference.m_guarantor_transaction DROP TABLE IF EXISTS `m_guarantor_transaction`; CREATE TABLE IF NOT EXISTS `m_guarantor_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `guarantor_fund_detail_id` bigint(20) NOT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `deposit_on_hold_transaction_id` bigint(20) NOT NULL, - `is_reversed` tinyint(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `guarantor_fund_detail_id` BIGINT NOT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `deposit_on_hold_transaction_id` BIGINT NOT NULL, + `is_reversed` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FK_guarantor_transaction_m_deposit_account_on_hold_transaction` (`deposit_on_hold_transaction_id`), KEY `FK_guarantor_transaction_guarantor_fund_detail` (`guarantor_fund_detail_id`), @@ -2072,7 +2072,7 @@ CREATE TABLE IF NOT EXISTS `m_guarantor_transaction` ( CONSTRAINT `FK_guarantor_transaction_guarantor_fund_detail` FOREIGN KEY (`guarantor_fund_detail_id`) REFERENCES `m_guarantor_funding_details` (`id`), CONSTRAINT `FK_guarantor_transaction_m_deposit_account_on_hold_transaction` FOREIGN KEY (`deposit_on_hold_transaction_id`) REFERENCES `m_deposit_account_on_hold_transaction` (`id`), CONSTRAINT `FK_guarantor_transaction_m_loan_transaction` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_guarantor_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_guarantor_transaction` DISABLE KEYS */; @@ -2082,13 +2082,13 @@ CREATE TABLE IF NOT EXISTS `m_guarantor_transaction` ( -- Dumping structure for table mifostenant-reference.m_holiday DROP TABLE IF EXISTS `m_holiday`; CREATE TABLE IF NOT EXISTS `m_holiday` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `from_date` datetime NOT NULL, `to_date` datetime NOT NULL, `repayments_rescheduled_to` datetime NOT NULL, - `status_enum` int(5) NOT NULL DEFAULT '100', - `processed` tinyint(1) NOT NULL DEFAULT '0', + `status_enum` INT NOT NULL DEFAULT '100', + `processed` tinyint NOT NULL DEFAULT '0', `description` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `holiday_name` (`name`,`from_date`) @@ -2102,8 +2102,8 @@ CREATE TABLE IF NOT EXISTS `m_holiday` ( -- Dumping structure for table mifostenant-reference.m_holiday_office DROP TABLE IF EXISTS `m_holiday_office`; CREATE TABLE IF NOT EXISTS `m_holiday_office` ( - `holiday_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, + `holiday_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, PRIMARY KEY (`holiday_id`,`office_id`), KEY `m_holiday_id_ibfk_1` (`holiday_id`), KEY `m_office_id_ibfk_2` (`office_id`), @@ -2119,21 +2119,21 @@ CREATE TABLE IF NOT EXISTS `m_holiday_office` ( -- Dumping structure for table mifostenant-reference.m_hook DROP TABLE IF EXISTS `m_hook`; CREATE TABLE IF NOT EXISTS `m_hook` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `template_id` smallint(6) NOT NULL, - `is_active` smallint(3) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `template_id` SMALLINT NOT NULL, + `is_active` SMALLINT NOT NULL DEFAULT '1', `name` varchar(45) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `ugd_template_id` bigint(20) DEFAULT NULL, + `ugd_template_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_template_id_idx` (`template_id`), KEY `fk_ugd_template_id` (`ugd_template_id`), CONSTRAINT `fk_template_id` FOREIGN KEY (`template_id`) REFERENCES `m_hook_templates` (`id`), CONSTRAINT `fk_ugd_template_id` FOREIGN KEY (`ugd_template_id`) REFERENCES `m_template` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_hook: ~0 rows (approximately) /*!40000 ALTER TABLE `m_hook` DISABLE KEYS */; @@ -2143,15 +2143,15 @@ CREATE TABLE IF NOT EXISTS `m_hook` ( -- Dumping structure for table mifostenant-reference.m_hook_configuration DROP TABLE IF EXISTS `m_hook_configuration`; CREATE TABLE IF NOT EXISTS `m_hook_configuration` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `hook_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `hook_id` BIGINT DEFAULT NULL, `field_type` varchar(45) NOT NULL, `field_name` varchar(100) NOT NULL, `field_value` varchar(100) NOT NULL, PRIMARY KEY (`id`), KEY `fk_hook_id_idx` (`hook_id`), CONSTRAINT `fk_hook_id_cfg` FOREIGN KEY (`hook_id`) REFERENCES `m_hook` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_hook_configuration: ~0 rows (approximately) /*!40000 ALTER TABLE `m_hook_configuration` DISABLE KEYS */; @@ -2161,14 +2161,14 @@ CREATE TABLE IF NOT EXISTS `m_hook_configuration` ( -- Dumping structure for table mifostenant-reference.m_hook_registered_events DROP TABLE IF EXISTS `m_hook_registered_events`; CREATE TABLE IF NOT EXISTS `m_hook_registered_events` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `hook_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `hook_id` BIGINT NOT NULL, `entity_name` varchar(45) NOT NULL, `action_name` varchar(45) NOT NULL, PRIMARY KEY (`id`), KEY `fk_hook_id_idx` (`hook_id`), CONSTRAINT `fk_hook_idc` FOREIGN KEY (`hook_id`) REFERENCES `m_hook` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_hook_registered_events: ~0 rows (approximately) /*!40000 ALTER TABLE `m_hook_registered_events` DISABLE KEYS */; @@ -2178,16 +2178,16 @@ CREATE TABLE IF NOT EXISTS `m_hook_registered_events` ( -- Dumping structure for table mifostenant-reference.m_hook_schema DROP TABLE IF EXISTS `m_hook_schema`; CREATE TABLE IF NOT EXISTS `m_hook_schema` ( - `id` smallint(6) NOT NULL AUTO_INCREMENT, - `hook_template_id` smallint(6) NOT NULL, + `id` SMALLINT NOT NULL AUTO_INCREMENT, + `hook_template_id` SMALLINT NOT NULL, `field_type` varchar(45) NOT NULL, `field_name` varchar(100) NOT NULL, `placeholder` varchar(100) DEFAULT NULL, - `optional` tinyint(3) NOT NULL DEFAULT '0', + `optional` TINYINT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `fk_hook_template_id_idx` (`hook_template_id`), CONSTRAINT `fk_hook_template_id` FOREIGN KEY (`hook_template_id`) REFERENCES `m_hook_templates` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_hook_schema: ~7 rows (approximately) /*!40000 ALTER TABLE `m_hook_schema` DISABLE KEYS */; @@ -2205,10 +2205,10 @@ INSERT INTO `m_hook_schema` (`id`, `hook_template_id`, `field_type`, `field_name -- Dumping structure for table mifostenant-reference.m_hook_templates DROP TABLE IF EXISTS `m_hook_templates`; CREATE TABLE IF NOT EXISTS `m_hook_templates` ( - `id` smallint(6) NOT NULL AUTO_INCREMENT, + `id` SMALLINT NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_hook_templates: ~2 rows (approximately) /*!40000 ALTER TABLE `m_hook_templates` DISABLE KEYS */; @@ -2221,11 +2221,11 @@ INSERT INTO `m_hook_templates` (`id`, `name`) VALUES -- Dumping structure for table mifostenant-reference.m_image DROP TABLE IF EXISTS `m_image`; CREATE TABLE IF NOT EXISTS `m_image` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `location` varchar(500) DEFAULT NULL, - `storage_type_enum` smallint(5) DEFAULT NULL, + `storage_type_enum` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_image: ~0 rows (approximately) /*!40000 ALTER TABLE `m_image` DISABLE KEYS */; @@ -2235,18 +2235,18 @@ CREATE TABLE IF NOT EXISTS `m_image` ( -- Dumping structure for table mifostenant-reference.m_interest_incentives DROP TABLE IF EXISTS `m_interest_incentives`; CREATE TABLE IF NOT EXISTS `m_interest_incentives` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `interest_rate_slab_id` bigint(20) NOT NULL, - `entiry_type` smallint(2) NOT NULL, - `attribute_name` smallint(2) NOT NULL, - `condition_type` smallint(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `interest_rate_slab_id` BIGINT NOT NULL, + `entiry_type` SMALLINT NOT NULL, + `attribute_name` SMALLINT NOT NULL, + `condition_type` SMALLINT NOT NULL, `attribute_value` varchar(50) NOT NULL, - `incentive_type` smallint(2) NOT NULL, + `incentive_type` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_interest_incentives_m_interest_rate_slab` (`interest_rate_slab_id`), CONSTRAINT `FK_m_interest_incentives_m_interest_rate_slab` FOREIGN KEY (`interest_rate_slab_id`) REFERENCES `m_interest_rate_slab` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_interest_incentives: ~0 rows (approximately) /*!40000 ALTER TABLE `m_interest_incentives` DISABLE KEYS */; @@ -2256,14 +2256,14 @@ CREATE TABLE IF NOT EXISTS `m_interest_incentives` ( -- Dumping structure for table mifostenant-reference.m_interest_rate_chart DROP TABLE IF EXISTS `m_interest_rate_chart`; CREATE TABLE IF NOT EXISTS `m_interest_rate_chart` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `description` varchar(200) DEFAULT NULL, `from_date` date NOT NULL, `end_date` date DEFAULT NULL, - `is_primary_grouping_by_amount` tinyint(1) NOT NULL DEFAULT '0', + `is_primary_grouping_by_amount` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_interest_rate_chart: ~0 rows (approximately) /*!40000 ALTER TABLE `m_interest_rate_chart` DISABLE KEYS */; @@ -2273,12 +2273,12 @@ CREATE TABLE IF NOT EXISTS `m_interest_rate_chart` ( -- Dumping structure for table mifostenant-reference.m_interest_rate_slab DROP TABLE IF EXISTS `m_interest_rate_slab`; CREATE TABLE IF NOT EXISTS `m_interest_rate_slab` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `interest_rate_chart_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `interest_rate_chart_id` BIGINT NOT NULL, `description` varchar(200) DEFAULT NULL, - `period_type_enum` smallint(5) DEFAULT NULL, - `from_period` int(11) DEFAULT NULL, - `to_period` int(11) DEFAULT NULL, + `period_type_enum` SMALLINT DEFAULT NULL, + `from_period` INT DEFAULT NULL, + `to_period` INT DEFAULT NULL, `amount_range_from` decimal(19,6) DEFAULT NULL, `amount_range_to` decimal(19,6) DEFAULT NULL, `annual_interest_rate` decimal(19,6) NOT NULL, @@ -2286,7 +2286,7 @@ CREATE TABLE IF NOT EXISTS `m_interest_rate_slab` ( PRIMARY KEY (`id`), KEY `FKIRS00000000000001` (`interest_rate_chart_id`), CONSTRAINT `FKIRS00000000000001` FOREIGN KEY (`interest_rate_chart_id`) REFERENCES `m_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_interest_rate_slab: ~0 rows (approximately) /*!40000 ALTER TABLE `m_interest_rate_slab` DISABLE KEYS */; @@ -2296,20 +2296,20 @@ CREATE TABLE IF NOT EXISTS `m_interest_rate_slab` ( -- Dumping structure for table mifostenant-reference.m_loan DROP TABLE IF EXISTS `m_loan`; CREATE TABLE IF NOT EXISTS `m_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, - `loanpurpose_cv_id` int(11) DEFAULT NULL, - `loan_status_id` smallint(5) NOT NULL, - `loan_type_enum` smallint(5) NOT NULL, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, + `loanpurpose_cv_id` INT DEFAULT NULL, + `loan_status_id` SMALLINT NOT NULL, + `loan_type_enum` SMALLINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `principal_amount_proposed` decimal(19,6) NOT NULL, `principal_amount` decimal(19,6) NOT NULL, `approved_principal` decimal(19,6) NOT NULL, @@ -2317,34 +2317,34 @@ CREATE TABLE IF NOT EXISTS `m_loan` ( `is_floating_interest_rate` bit(1) DEFAULT b'0', `interest_rate_differential` decimal(19,6) DEFAULT '0.000000', `nominal_interest_rate_per_period` decimal(19,6) DEFAULT NULL, - `interest_period_frequency_enum` smallint(5) DEFAULT NULL, + `interest_period_frequency_enum` SMALLINT DEFAULT NULL, `annual_nominal_interest_rate` decimal(19,6) DEFAULT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `allow_partial_period_interest_calcualtion` tinyint(1) NOT NULL DEFAULT '0', - `term_frequency` smallint(5) NOT NULL DEFAULT '0', - `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `grace_on_principal_periods` smallint(5) DEFAULT NULL, - `recurring_moratorium_principal_periods` smallint(5) DEFAULT NULL, - `grace_on_interest_periods` smallint(5) DEFAULT NULL, - `grace_interest_free_periods` smallint(5) DEFAULT NULL, - `amortization_method_enum` smallint(5) NOT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `allow_partial_period_interest_calcualtion` tinyint NOT NULL DEFAULT '0', + `term_frequency` SMALLINT NOT NULL DEFAULT '0', + `term_period_frequency_enum` SMALLINT NOT NULL DEFAULT '2', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `grace_on_principal_periods` SMALLINT DEFAULT NULL, + `recurring_moratorium_principal_periods` SMALLINT DEFAULT NULL, + `grace_on_interest_periods` SMALLINT DEFAULT NULL, + `grace_interest_free_periods` SMALLINT DEFAULT NULL, + `amortization_method_enum` SMALLINT NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `expected_disbursedon_date` date DEFAULT NULL, `expected_firstrepaymenton_date` date DEFAULT NULL, `interest_calculated_from_date` date DEFAULT NULL, `disbursedon_date` date DEFAULT NULL, - `disbursedon_userid` bigint(20) DEFAULT NULL, + `disbursedon_userid` BIGINT DEFAULT NULL, `expected_maturedon_date` date DEFAULT NULL, `maturedon_date` date DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL, `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -2374,32 +2374,32 @@ CREATE TABLE IF NOT EXISTS `m_loan` ( `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `total_overpaid_derived` decimal(19,6) DEFAULT NULL, `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `rescheduledon_date` date DEFAULT NULL, - `rescheduledon_userid` bigint(20) DEFAULT NULL, + `rescheduledon_userid` BIGINT DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `writtenoffon_date` date DEFAULT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, - `sync_disbursement_with_meeting` tinyint(1) DEFAULT NULL, - `loan_counter` smallint(6) DEFAULT NULL, - `loan_product_counter` smallint(6) DEFAULT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, + `sync_disbursement_with_meeting` tinyint DEFAULT NULL, + `loan_counter` SMALLINT DEFAULT NULL, + `loan_product_counter` SMALLINT DEFAULT NULL, `fixed_emi_amount` decimal(19,6) DEFAULT NULL, `max_outstanding_loan_balance` decimal(19,6) DEFAULT NULL, - `grace_on_arrears_ageing` smallint(5) DEFAULT NULL, - `is_npa` tinyint(1) NOT NULL DEFAULT '0', + `grace_on_arrears_ageing` SMALLINT DEFAULT NULL, + `is_npa` tinyint NOT NULL DEFAULT '0', `total_recovered_derived` decimal(19,6) DEFAULT NULL, `accrued_till` date DEFAULT NULL, `interest_recalcualated_on` date DEFAULT NULL, - `days_in_month_enum` smallint(5) NOT NULL DEFAULT '1', - `days_in_year_enum` smallint(5) NOT NULL DEFAULT '1', - `interest_recalculation_enabled` tinyint(4) NOT NULL DEFAULT '0', + `days_in_month_enum` SMALLINT NOT NULL DEFAULT '1', + `days_in_year_enum` SMALLINT NOT NULL DEFAULT '1', + `interest_recalculation_enabled` TINYINT NOT NULL DEFAULT '0', `guarantee_amount_derived` decimal(19,6) DEFAULT NULL, - `create_standing_instruction_at_disbursement` tinyint(1) DEFAULT NULL, - `version` int(15) NOT NULL DEFAULT '1', - `writeoff_reason_cv_id` int(11) DEFAULT NULL, - `loan_sub_status_id` smallint(5) DEFAULT NULL, - `is_topup` tinyint(1) NOT NULL DEFAULT '0', + `create_standing_instruction_at_disbursement` tinyint DEFAULT NULL, + `version` INT NOT NULL DEFAULT '1', + `writeoff_reason_cv_id` INT DEFAULT NULL, + `loan_sub_status_id` SMALLINT DEFAULT NULL, + `is_topup` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`), UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`), @@ -2432,7 +2432,7 @@ CREATE TABLE IF NOT EXISTS `m_loan` ( CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_writeoffreason_m_loan_m_code_value` FOREIGN KEY (`writeoff_reason_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan: ~1 rows (approximately) /*!40000 ALTER TABLE `m_loan` DISABLE KEYS */; @@ -2444,17 +2444,17 @@ INSERT INTO `m_loan` (`id`, `account_no`, `external_id`, `client_id`, `group_id` -- Dumping structure for table mifostenant-reference.m_loanproduct_provisioning_entry DROP TABLE IF EXISTS `m_loanproduct_provisioning_entry`; CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_entry` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `history_id` bigint(20) NOT NULL, - `criteria_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `history_id` BIGINT NOT NULL, + `criteria_id` BIGINT NOT NULL, `currency_code` varchar(3) NOT NULL, - `office_id` bigint(20) NOT NULL, - `product_id` bigint(20) NOT NULL, - `category_id` bigint(20) NOT NULL, - `overdue_in_days` bigint(20) DEFAULT '0', + `office_id` BIGINT NOT NULL, + `product_id` BIGINT NOT NULL, + `category_id` BIGINT NOT NULL, + `overdue_in_days` BIGINT DEFAULT '0', `reseve_amount` decimal(20,6) DEFAULT '0.000000', - `liability_account` bigint(20) DEFAULT NULL, - `expense_account` bigint(20) DEFAULT NULL, + `liability_account` BIGINT DEFAULT NULL, + `expense_account` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `history_id` (`history_id`), KEY `criteria_id` (`criteria_id`), @@ -2472,7 +2472,7 @@ CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_entry` ( CONSTRAINT `m_loanproduct_provisioning_entry_ibfk_6` FOREIGN KEY (`category_id`) REFERENCES `m_provision_category` (`id`), CONSTRAINT `m_loanproduct_provisioning_entry_ibfk_7` FOREIGN KEY (`liability_account`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `m_loanproduct_provisioning_entry_ibfk_8` FOREIGN KEY (`expense_account`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loanproduct_provisioning_entry: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loanproduct_provisioning_entry` DISABLE KEYS */; @@ -2482,15 +2482,15 @@ CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_entry` ( -- Dumping structure for table mifostenant-reference.m_loanproduct_provisioning_mapping DROP TABLE IF EXISTS `m_loanproduct_provisioning_mapping`; CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, - `criteria_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `criteria_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `product_id` (`product_id`), KEY `criteria_id` (`criteria_id`), CONSTRAINT `m_loanproduct_provisioning_mapping_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`), CONSTRAINT `m_loanproduct_provisioning_mapping_ibfk_2` FOREIGN KEY (`criteria_id`) REFERENCES `m_provisioning_criteria` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loanproduct_provisioning_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loanproduct_provisioning_mapping` DISABLE KEYS */; @@ -2500,7 +2500,7 @@ CREATE TABLE IF NOT EXISTS `m_loanproduct_provisioning_mapping` ( -- Dumping structure for table mifostenant-reference.m_loan_arrears_aging DROP TABLE IF EXISTS `m_loan_arrears_aging`; CREATE TABLE IF NOT EXISTS `m_loan_arrears_aging` ( - `loan_id` bigint(20) NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL AUTO_INCREMENT, `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -2509,7 +2509,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_arrears_aging` ( `overdue_since_date_derived` date DEFAULT NULL, PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_arrears_aging: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_arrears_aging` DISABLE KEYS */; @@ -2519,14 +2519,14 @@ CREATE TABLE IF NOT EXISTS `m_loan_arrears_aging` ( -- Dumping structure for table mifostenant-reference.m_loan_charge DROP TABLE IF EXISTS `m_loan_charge`; CREATE TABLE IF NOT EXISTS `m_loan_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `due_for_collection_as_of_date` date DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, - `charge_payment_mode_enum` smallint(5) NOT NULL DEFAULT '0', + `charge_calculation_enum` SMALLINT NOT NULL, + `charge_payment_mode_enum` SMALLINT NOT NULL DEFAULT '0', `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `charge_amount_or_percentage` decimal(19,6) DEFAULT NULL, @@ -2535,17 +2535,17 @@ CREATE TABLE IF NOT EXISTS `m_loan_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', `min_cap` decimal(19,6) DEFAULT NULL, `max_cap` decimal(19,6) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_loan_charge_ibfk_2` (`loan_id`), CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_charge` DISABLE KEYS */; @@ -2557,17 +2557,17 @@ INSERT INTO `m_loan_charge` (`id`, `loan_id`, `charge_id`, `is_penalty`, `charge -- Dumping structure for table mifostenant-reference.m_loan_charge_paid_by DROP TABLE IF EXISTS `m_loan_charge_paid_by`; CREATE TABLE IF NOT EXISTS `m_loan_charge_paid_by` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_transaction_id` bigint(20) NOT NULL, - `loan_charge_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_transaction_id` BIGINT NOT NULL, + `loan_charge_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `installment_number` smallint(5) DEFAULT NULL, + `installment_number` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK__m_loan_transaction` (`loan_transaction_id`), KEY `FK__m_loan_charge` (`loan_charge_id`), CONSTRAINT `FK__m_loan_charge` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK__m_loan_transaction` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_charge_paid_by: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_charge_paid_by` DISABLE KEYS */; @@ -2577,9 +2577,9 @@ CREATE TABLE IF NOT EXISTS `m_loan_charge_paid_by` ( -- Dumping structure for table mifostenant-reference.m_loan_collateral DROP TABLE IF EXISTS `m_loan_collateral`; CREATE TABLE IF NOT EXISTS `m_loan_collateral` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `type_cv_id` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `type_cv_id` INT NOT NULL, `value` decimal(19,6) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), @@ -2587,7 +2587,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_collateral` ( KEY `FK_collateral_code_value` (`type_cv_id`), CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`), CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_collateral: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_collateral` DISABLE KEYS */; @@ -2597,15 +2597,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_collateral` ( -- Dumping structure for table mifostenant-reference.m_loan_disbursement_detail DROP TABLE IF EXISTS `m_loan_disbursement_detail`; CREATE TABLE IF NOT EXISTS `m_loan_disbursement_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `expected_disburse_date` datetime NOT NULL, `disbursedon_date` datetime DEFAULT NULL, `principal` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_loan_disbursement_detail_loan_id` (`loan_id`), CONSTRAINT `FK_loan_disbursement_detail_loan_id` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_disbursement_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_disbursement_detail` DISABLE KEYS */; @@ -2615,24 +2615,24 @@ CREATE TABLE IF NOT EXISTS `m_loan_disbursement_detail` ( -- Dumping structure for table mifostenant-reference.m_loan_installment_charge DROP TABLE IF EXISTS `m_loan_installment_charge`; CREATE TABLE IF NOT EXISTS `m_loan_installment_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` bigint(20) NOT NULL, - `loan_schedule_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `loan_schedule_id` BIGINT NOT NULL, `due_date` date DEFAULT NULL, `amount` decimal(19,6) NOT NULL, `amount_paid_derived` decimal(19,6) DEFAULT NULL, `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', `amount_through_charge_payment` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_loan_charge_id_charge_schedule` (`loan_charge_id`), KEY `FK_loan_schedule_id_charge_schedule` (`loan_schedule_id`), CONSTRAINT `FK_loan_charge_id_charge_schedule` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK_loan_schedule_id_charge_schedule` FOREIGN KEY (`loan_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_installment_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_installment_charge` DISABLE KEYS */; @@ -2642,14 +2642,14 @@ CREATE TABLE IF NOT EXISTS `m_loan_installment_charge` ( -- Dumping structure for table mifostenant-reference.m_loan_interest_recalculation_additional_details DROP TABLE IF EXISTS `m_loan_interest_recalculation_additional_details`; CREATE TABLE IF NOT EXISTS `m_loan_interest_recalculation_additional_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_repayment_schedule_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_repayment_schedule_id` BIGINT NOT NULL, `effective_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_additional_details_repayment_schedule_id` (`loan_repayment_schedule_id`), CONSTRAINT `FK_additional_details_repayment_schedule_id` FOREIGN KEY (`loan_repayment_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_interest_recalculation_additional_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_interest_recalculation_additional_details` DISABLE KEYS */; @@ -2659,21 +2659,21 @@ CREATE TABLE IF NOT EXISTS `m_loan_interest_recalculation_additional_details` ( -- Dumping structure for table mifostenant-reference.m_loan_officer_assignment_history DROP TABLE IF EXISTS `m_loan_officer_assignment_history`; CREATE TABLE IF NOT EXISTS `m_loan_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`), KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_officer_assignment_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_officer_assignment_history` DISABLE KEYS */; @@ -2683,16 +2683,16 @@ CREATE TABLE IF NOT EXISTS `m_loan_officer_assignment_history` ( -- Dumping structure for table mifostenant-reference.m_loan_overdue_installment_charge DROP TABLE IF EXISTS `m_loan_overdue_installment_charge`; CREATE TABLE IF NOT EXISTS `m_loan_overdue_installment_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` bigint(20) NOT NULL, - `loan_schedule_id` bigint(20) NOT NULL, - `frequency_number` int(10) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `loan_schedule_id` BIGINT NOT NULL, + `frequency_number` INT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_loan_overdue_installment_charge_m_loan_charge` (`loan_charge_id`), KEY `FK_m_loan_overdue_installment_charge_m_loan_repayment_schedule` (`loan_schedule_id`), CONSTRAINT `FK_m_loan_overdue_installment_charge_m_loan_charge` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK_m_loan_overdue_installment_charge_m_loan_repayment_schedule` FOREIGN KEY (`loan_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_overdue_installment_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_overdue_installment_charge` DISABLE KEYS */; @@ -2702,7 +2702,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_overdue_installment_charge` ( -- Dumping structure for table mifostenant-reference.m_loan_paid_in_advance DROP TABLE IF EXISTS `m_loan_paid_in_advance`; CREATE TABLE IF NOT EXISTS `m_loan_paid_in_advance` ( - `loan_id` bigint(20) NOT NULL, + `loan_id` BIGINT NOT NULL, `principal_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `interest_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `fee_charges_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -2710,7 +2710,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_paid_in_advance` ( `total_in_advance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', PRIMARY KEY (`loan_id`), CONSTRAINT `m_loan_paid_in_advance_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_paid_in_advance: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_paid_in_advance` DISABLE KEYS */; @@ -2720,22 +2720,22 @@ CREATE TABLE IF NOT EXISTS `m_loan_paid_in_advance` ( -- Dumping structure for table mifostenant-reference.m_loan_recalculation_details DROP TABLE IF EXISTS `m_loan_recalculation_details`; CREATE TABLE IF NOT EXISTS `m_loan_recalculation_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `compound_type_enum` smallint(5) NOT NULL, - `reschedule_strategy_enum` smallint(5) NOT NULL, - `rest_frequency_type_enum` smallint(1) NOT NULL, - `rest_frequency_interval` smallint(3) NOT NULL DEFAULT '0', - `compounding_frequency_type_enum` smallint(1) DEFAULT NULL, - `compounding_frequency_interval` smallint(3) DEFAULT NULL, - `rest_frequency_nth_day_enum` int(5) DEFAULT NULL, - `rest_frequency_on_day` int(5) DEFAULT NULL, - `rest_frequency_weekday_enum` int(5) DEFAULT NULL, - `compounding_frequency_nth_day_enum` int(5) DEFAULT NULL, - `compounding_frequency_on_day` int(5) DEFAULT NULL, - `is_compounding_to_be_posted_as_transaction` tinyint(1) NOT NULL DEFAULT '0', - `compounding_frequency_weekday_enum` int(5) DEFAULT NULL, - `allow_compounding_on_eod` tinyint(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `compound_type_enum` SMALLINT NOT NULL, + `reschedule_strategy_enum` SMALLINT NOT NULL, + `rest_frequency_type_enum` SMALLINT NOT NULL, + `rest_frequency_interval` SMALLINT NOT NULL DEFAULT '0', + `compounding_frequency_type_enum` SMALLINT DEFAULT NULL, + `compounding_frequency_interval` SMALLINT DEFAULT NULL, + `rest_frequency_nth_day_enum` INT DEFAULT NULL, + `rest_frequency_on_day` INT DEFAULT NULL, + `rest_frequency_weekday_enum` INT DEFAULT NULL, + `compounding_frequency_nth_day_enum` INT DEFAULT NULL, + `compounding_frequency_on_day` INT DEFAULT NULL, + `is_compounding_to_be_posted_as_transaction` tinyint NOT NULL DEFAULT '0', + `compounding_frequency_weekday_enum` INT DEFAULT NULL, + `allow_compounding_on_eod` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FK_m_loan_m_loan_recalculation_details` (`loan_id`), CONSTRAINT `FK_m_loan_m_loan_recalculation_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) @@ -2749,11 +2749,11 @@ CREATE TABLE IF NOT EXISTS `m_loan_recalculation_details` ( -- Dumping structure for table mifostenant-reference.m_loan_repayment_schedule DROP TABLE IF EXISTS `m_loan_repayment_schedule`; CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `principal_completed_derived` decimal(19,6) DEFAULT NULL, `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL, @@ -2776,15 +2776,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule` ( `total_paid_late_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, `obligations_met_on_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, - `recalculated_interest_component` tinyint(1) NOT NULL DEFAULT '0', + `lastmodifiedby_id` BIGINT DEFAULT NULL, + `recalculated_interest_component` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FK488B92AA40BE0710` (`loan_id`), CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_repayment_schedule: ~25 rows (approximately) /*!40000 ALTER TABLE `m_loan_repayment_schedule` DISABLE KEYS */; @@ -2820,27 +2820,27 @@ INSERT INTO `m_loan_repayment_schedule` (`id`, `loan_id`, `fromdate`, `duedate`, -- Dumping structure for table mifostenant-reference.m_loan_repayment_schedule_history DROP TABLE IF EXISTS `m_loan_repayment_schedule_history`; CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `loan_reschedule_request_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `loan_reschedule_request_id` BIGINT DEFAULT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `interest_amount` decimal(19,6) DEFAULT NULL, `fee_charges_amount` decimal(19,6) DEFAULT NULL, `penalty_charges_amount` decimal(19,6) DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, - `version` int(5) NOT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, + `version` INT NOT NULL, PRIMARY KEY (`id`), KEY `loan_id` (`loan_id`), KEY `loan_reschedule_request_id` (`loan_reschedule_request_id`), CONSTRAINT `m_loan_repayment_schedule_history_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `m_loan_repayment_schedule_history_ibfk_2` FOREIGN KEY (`loan_reschedule_request_id`) REFERENCES `m_loan_reschedule_request` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_repayment_schedule_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_repayment_schedule_history` DISABLE KEYS */; @@ -2850,20 +2850,20 @@ CREATE TABLE IF NOT EXISTS `m_loan_repayment_schedule_history` ( -- Dumping structure for table mifostenant-reference.m_loan_reschedule_request DROP TABLE IF EXISTS `m_loan_reschedule_request`; CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `status_enum` smallint(5) NOT NULL, - `reschedule_from_installment` smallint(5) NOT NULL COMMENT 'Rescheduling will start from this installment', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `status_enum` SMALLINT NOT NULL, + `reschedule_from_installment` SMALLINT NOT NULL COMMENT 'Rescheduling will start from this installment', `reschedule_from_date` date NOT NULL COMMENT 'Rescheduling will start from the installment with due date similar to this date.', - `recalculate_interest` tinyint(1) DEFAULT NULL COMMENT 'If set to 1, interest will be recalculated starting from the reschedule period.', - `reschedule_reason_cv_id` int(11) DEFAULT NULL COMMENT 'ID of code value of reason for rescheduling', + `recalculate_interest` tinyint DEFAULT NULL COMMENT 'If set to 1, interest will be recalculated starting from the reschedule period.', + `reschedule_reason_cv_id` INT DEFAULT NULL COMMENT 'ID of code value of reason for rescheduling', `reschedule_reason_comment` varchar(500) DEFAULT NULL COMMENT 'Text provided in addition to the reason code value', `submitted_on_date` date NOT NULL, - `submitted_by_user_id` bigint(20) NOT NULL, + `submitted_by_user_id` BIGINT NOT NULL, `approved_on_date` date DEFAULT NULL, - `approved_by_user_id` bigint(20) DEFAULT NULL, + `approved_by_user_id` BIGINT DEFAULT NULL, `rejected_on_date` date DEFAULT NULL, - `rejected_by_user_id` bigint(20) DEFAULT NULL, + `rejected_by_user_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `loan_id` (`loan_id`), KEY `reschedule_reason_cv_id` (`reschedule_reason_cv_id`), @@ -2875,7 +2875,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request` ( CONSTRAINT `m_loan_reschedule_request_ibfk_3` FOREIGN KEY (`submitted_by_user_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_reschedule_request_ibfk_4` FOREIGN KEY (`approved_by_user_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_loan_reschedule_request_ibfk_5` FOREIGN KEY (`rejected_by_user_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_reschedule_request: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_reschedule_request` DISABLE KEYS */; @@ -2885,15 +2885,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request` ( -- Dumping structure for table mifostenant-reference.m_loan_reschedule_request_term_variations_mapping DROP TABLE IF EXISTS `m_loan_reschedule_request_term_variations_mapping`; CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request_term_variations_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_reschedule_request_id` bigint(20) NOT NULL, - `loan_term_variations_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_reschedule_request_id` BIGINT NOT NULL, + `loan_term_variations_id` BIGINT NOT NULL, PRIMARY KEY (`id`), KEY `FK__m_loan_reschedule_request` (`loan_reschedule_request_id`), KEY `FK__m_loan_term_variations` (`loan_term_variations_id`), CONSTRAINT `FK__m_loan_reschedule_request` FOREIGN KEY (`loan_reschedule_request_id`) REFERENCES `m_loan_reschedule_request` (`id`), CONSTRAINT `FK__m_loan_term_variations` FOREIGN KEY (`loan_term_variations_id`) REFERENCES `m_loan_term_variations` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_reschedule_request_term_variations_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_reschedule_request_term_variations_mapping` DISABLE KEYS */; @@ -2903,20 +2903,20 @@ CREATE TABLE IF NOT EXISTS `m_loan_reschedule_request_term_variations_mapping` ( -- Dumping structure for table mifostenant-reference.m_loan_term_variations DROP TABLE IF EXISTS `m_loan_term_variations`; CREATE TABLE IF NOT EXISTS `m_loan_term_variations` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `term_type` smallint(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `term_type` SMALLINT NOT NULL, `applicable_date` date NOT NULL, `decimal_value` decimal(19,6) DEFAULT NULL, `date_value` date DEFAULT NULL, - `is_specific_to_installment` tinyint(4) NOT NULL DEFAULT '0', - `applied_on_loan_status` smallint(5) NOT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', - `parent_id` bigint(20) DEFAULT NULL, + `is_specific_to_installment` TINYINT NOT NULL DEFAULT '0', + `applied_on_loan_status` SMALLINT NOT NULL, + `is_active` tinyint NOT NULL DEFAULT '1', + `parent_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_loan_id_m_loan_id` (`loan_id`), CONSTRAINT `FK_loan_id_m_loan_id` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_term_variations: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_term_variations` DISABLE KEYS */; @@ -2926,10 +2926,10 @@ CREATE TABLE IF NOT EXISTS `m_loan_term_variations` ( -- Dumping structure for table mifostenant-reference.m_loan_topup DROP TABLE IF EXISTS `m_loan_topup`; CREATE TABLE IF NOT EXISTS `m_loan_topup` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `closure_loan_id` bigint(20) NOT NULL, - `account_transfer_details_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `closure_loan_id` BIGINT NOT NULL, + `account_transfer_details_id` BIGINT DEFAULT NULL, `topup_amount` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `m_loan_topup_FK_loan_id` (`loan_id`), @@ -2938,7 +2938,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_topup` ( CONSTRAINT `m_loan_topup_FK_account_transfer_details_id` FOREIGN KEY (`account_transfer_details_id`) REFERENCES `m_account_transfer_details` (`id`), CONSTRAINT `m_loan_topup_FK_closure_loan_id` FOREIGN KEY (`closure_loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `m_loan_topup_FK_loan_id` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_topup: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_topup` DISABLE KEYS */; @@ -2948,15 +2948,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_topup` ( -- Dumping structure for table mifostenant-reference.m_loan_tranche_charges DROP TABLE IF EXISTS `m_loan_tranche_charges`; CREATE TABLE IF NOT EXISTS `m_loan_tranche_charges` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_loan_tranche_charges_m_loan` (`loan_id`), KEY `FK_m_loan_tranche_charges_m_charge` (`charge_id`), CONSTRAINT `FK_m_loan_tranche_charges_m_charge` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `FK_m_loan_tranche_charges_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_tranche_charges: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_tranche_charges` DISABLE KEYS */; @@ -2966,15 +2966,15 @@ CREATE TABLE IF NOT EXISTS `m_loan_tranche_charges` ( -- Dumping structure for table mifostenant-reference.m_loan_tranche_disbursement_charge DROP TABLE IF EXISTS `m_loan_tranche_disbursement_charge`; CREATE TABLE IF NOT EXISTS `m_loan_tranche_disbursement_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_charge_id` bigint(20) NOT NULL, - `disbursement_detail_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_charge_id` BIGINT NOT NULL, + `disbursement_detail_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_loan_tranche_disbursement_charge_m_loan_charge` (`loan_charge_id`), KEY `FK_m_loan_tranche_disbursement_charge_m_loan_disbursement_detail` (`disbursement_detail_id`), CONSTRAINT `FK_m_loan_tranche_disbursement_charge_m_loan_charge` FOREIGN KEY (`loan_charge_id`) REFERENCES `m_loan_charge` (`id`), CONSTRAINT `FK_m_loan_tranche_disbursement_charge_m_loan_disbursement_detail` FOREIGN KEY (`disbursement_detail_id`) REFERENCES `m_loan_disbursement_detail` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_tranche_disbursement_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_tranche_disbursement_charge` DISABLE KEYS */; @@ -2984,13 +2984,13 @@ CREATE TABLE IF NOT EXISTS `m_loan_tranche_disbursement_charge` ( -- Dumping structure for table mifostenant-reference.m_loan_transaction DROP TABLE IF EXISTS `m_loan_transaction`; CREATE TABLE IF NOT EXISTS `m_loan_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `payment_detail_id` bigint(20) DEFAULT NULL, - `is_reversed` tinyint(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `payment_detail_id` BIGINT DEFAULT NULL, + `is_reversed` tinyint NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `transaction_type_enum` smallint(5) NOT NULL, + `transaction_type_enum` SMALLINT NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, @@ -3001,9 +3001,9 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction` ( `unrecognized_income_portion` decimal(19,6) DEFAULT NULL, `outstanding_loan_balance_derived` decimal(19,6) DEFAULT NULL, `submitted_on_date` date NOT NULL, - `manually_adjusted_or_reversed` tinyint(1) DEFAULT '0', + `manually_adjusted_or_reversed` tinyint DEFAULT '0', `created_date` datetime DEFAULT NULL, - `appuser_id` bigint(20) DEFAULT NULL, + `appuser_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `external_id_UNIQUE` (`external_id`), KEY `FKCFCEA42640BE0710` (`loan_id`), @@ -3012,7 +3012,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction` ( CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `FK_m_loan_transaction_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK_m_loan_transaction_m_payment_detail` FOREIGN KEY (`payment_detail_id`) REFERENCES `m_payment_detail` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_transaction` DISABLE KEYS */; @@ -3022,9 +3022,9 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction` ( -- Dumping structure for table mifostenant-reference.m_loan_transaction_repayment_schedule_mapping DROP TABLE IF EXISTS `m_loan_transaction_repayment_schedule_mapping`; CREATE TABLE IF NOT EXISTS `m_loan_transaction_repayment_schedule_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_transaction_id` bigint(20) NOT NULL, - `loan_repayment_schedule_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_transaction_id` BIGINT NOT NULL, + `loan_repayment_schedule_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, `principal_portion_derived` decimal(19,6) DEFAULT NULL, `interest_portion_derived` decimal(19,6) DEFAULT NULL, @@ -3035,7 +3035,7 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction_repayment_schedule_mapping` ( KEY `FK_mappings_m_loan_repayment_schedule` (`loan_repayment_schedule_id`), CONSTRAINT `FK_mappings_m_loan_repayment_schedule` FOREIGN KEY (`loan_repayment_schedule_id`) REFERENCES `m_loan_repayment_schedule` (`id`), CONSTRAINT `FK_mappings_m_loan_transaction` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_loan_transaction_repayment_schedule_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_loan_transaction_repayment_schedule_mapping` DISABLE KEYS */; @@ -3045,25 +3045,25 @@ CREATE TABLE IF NOT EXISTS `m_loan_transaction_repayment_schedule_mapping` ( -- Dumping structure for table mifostenant-reference.m_mandatory_savings_schedule DROP TABLE IF EXISTS `m_mandatory_savings_schedule`; CREATE TABLE IF NOT EXISTS `m_mandatory_savings_schedule` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `fromdate` date DEFAULT NULL, `duedate` date NOT NULL, - `installment` smallint(5) NOT NULL, + `installment` SMALLINT NOT NULL, `deposit_amount` decimal(19,6) DEFAULT NULL, `deposit_amount_completed_derived` decimal(19,6) DEFAULT NULL, `total_paid_in_advance_derived` decimal(19,6) DEFAULT NULL, `total_paid_late_derived` decimal(19,6) DEFAULT NULL, `completed_derived` bit(1) NOT NULL, `obligations_met_on_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FKMSS0000000001` (`savings_account_id`), CONSTRAINT `FKMSS0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_mandatory_savings_schedule: ~0 rows (approximately) /*!40000 ALTER TABLE `m_mandatory_savings_schedule` DISABLE KEYS */; @@ -3073,8 +3073,8 @@ CREATE TABLE IF NOT EXISTS `m_mandatory_savings_schedule` ( -- Dumping structure for table mifostenant-reference.m_meeting DROP TABLE IF EXISTS `m_meeting`; CREATE TABLE IF NOT EXISTS `m_meeting` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `calendar_instance_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `calendar_instance_id` BIGINT NOT NULL, `meeting_date` date NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_calendar_instance_id_meeting_date` (`calendar_instance_id`,`meeting_date`), @@ -3089,20 +3089,20 @@ CREATE TABLE IF NOT EXISTS `m_meeting` ( -- Dumping structure for table mifostenant-reference.m_note DROP TABLE IF EXISTS `m_note`; CREATE TABLE IF NOT EXISTS `m_note` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `loan_transaction_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, - `savings_account_transaction_id` bigint(20) DEFAULT NULL, - `share_account_id` bigint(20) DEFAULT NULL, - `note_type_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `loan_transaction_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, + `savings_account_transaction_id` BIGINT DEFAULT NULL, + `share_account_id` BIGINT DEFAULT NULL, + `note_type_enum` SMALLINT NOT NULL, `note` varchar(1000) DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK7C9708924D26803` (`loan_transaction_id`), KEY `FK7C97089541F0A56` (`createdby_id`), @@ -3118,7 +3118,7 @@ CREATE TABLE IF NOT EXISTS `m_note` ( CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_savings_account_id` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_note: ~0 rows (approximately) /*!40000 ALTER TABLE `m_note` DISABLE KEYS */; @@ -3128,8 +3128,8 @@ CREATE TABLE IF NOT EXISTS `m_note` ( -- Dumping structure for table mifostenant-reference.m_office DROP TABLE IF EXISTS `m_office`; CREATE TABLE IF NOT EXISTS `m_office` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `parent_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `parent_id` BIGINT DEFAULT NULL, `hierarchy` varchar(100) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, `name` varchar(50) NOT NULL, @@ -3139,7 +3139,7 @@ CREATE TABLE IF NOT EXISTS `m_office` ( UNIQUE KEY `externalid_org` (`external_id`), KEY `FK2291C477E2551DCC` (`parent_id`), CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_office: ~3 rows (approximately) /*!40000 ALTER TABLE `m_office` DISABLE KEYS */; @@ -3153,11 +3153,11 @@ INSERT INTO `m_office` (`id`, `parent_id`, `hierarchy`, `external_id`, `name`, ` -- Dumping structure for table mifostenant-reference.m_office_transaction DROP TABLE IF EXISTS `m_office_transaction`; CREATE TABLE IF NOT EXISTS `m_office_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_office_id` bigint(20) DEFAULT NULL, - `to_office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `from_office_id` BIGINT DEFAULT NULL, + `to_office_id` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` int(11) NOT NULL, + `currency_digits` INT NOT NULL, `transaction_amount` decimal(19,6) NOT NULL, `transaction_date` date NOT NULL, `description` varchar(100) DEFAULT NULL, @@ -3166,7 +3166,7 @@ CREATE TABLE IF NOT EXISTS `m_office_transaction` ( KEY `FK1E37728B783C5C25` (`from_office_id`), CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_office_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_office_transaction` DISABLE KEYS */; @@ -3176,15 +3176,15 @@ CREATE TABLE IF NOT EXISTS `m_office_transaction` ( -- Dumping structure for table mifostenant-reference.m_organisation_currency DROP TABLE IF EXISTS `m_organisation_currency`; CREATE TABLE IF NOT EXISTS `m_organisation_currency` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(3) NOT NULL, - `decimal_places` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `decimal_places` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `name` varchar(50) NOT NULL, `display_symbol` varchar(10) DEFAULT NULL, `internationalized_name_code` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_organisation_currency: ~0 rows (approximately) /*!40000 ALTER TABLE `m_organisation_currency` DISABLE KEYS */; @@ -3196,13 +3196,13 @@ INSERT INTO `m_organisation_currency` (`id`, `code`, `decimal_places`, `currency -- Dumping structure for table mifostenant-reference.m_password_validation_policy DROP TABLE IF EXISTS `m_password_validation_policy`; CREATE TABLE IF NOT EXISTS `m_password_validation_policy` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `regex` text NOT NULL, `description` text NOT NULL, - `active` tinyint(4) NOT NULL DEFAULT '0', + `active` TINYINT NOT NULL DEFAULT '0', `key` varchar(255) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_password_validation_policy: ~2 rows (approximately) /*!40000 ALTER TABLE `m_password_validation_policy` DISABLE KEYS */; @@ -3215,8 +3215,8 @@ INSERT INTO `m_password_validation_policy` (`id`, `regex`, `description`, `activ -- Dumping structure for table mifostenant-reference.m_payment_detail DROP TABLE IF EXISTS `m_payment_detail`; CREATE TABLE IF NOT EXISTS `m_payment_detail` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `payment_type_id` int(11) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `payment_type_id` INT DEFAULT NULL, `account_number` varchar(100) DEFAULT NULL, `check_number` varchar(100) DEFAULT NULL, `receipt_number` varchar(100) DEFAULT NULL, @@ -3225,7 +3225,7 @@ CREATE TABLE IF NOT EXISTS `m_payment_detail` ( PRIMARY KEY (`id`), KEY `FK_m_payment_detail_m_code_value` (`payment_type_id`), CONSTRAINT `FK_m_payment_detail_m_payment_type` FOREIGN KEY (`payment_type_id`) REFERENCES `m_payment_type` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_payment_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `m_payment_detail` DISABLE KEYS */; @@ -3235,13 +3235,13 @@ CREATE TABLE IF NOT EXISTS `m_payment_detail` ( -- Dumping structure for table mifostenant-reference.m_payment_type DROP TABLE IF EXISTS `m_payment_type`; CREATE TABLE IF NOT EXISTS `m_payment_type` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `value` varchar(100) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, - `is_cash_payment` tinyint(1) DEFAULT '0', - `order_position` int(11) NOT NULL DEFAULT '0', + `is_cash_payment` tinyint DEFAULT '0', + `order_position` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_payment_type: ~0 rows (approximately) /*!40000 ALTER TABLE `m_payment_type` DISABLE KEYS */; @@ -3251,15 +3251,15 @@ CREATE TABLE IF NOT EXISTS `m_payment_type` ( -- Dumping structure for table mifostenant-reference.m_permission DROP TABLE IF EXISTS `m_permission`; CREATE TABLE IF NOT EXISTS `m_permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `grouping` varchar(45) DEFAULT NULL, `code` varchar(100) NOT NULL, `entity_name` varchar(100) DEFAULT NULL, `action_name` varchar(100) DEFAULT NULL, - `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1', + `can_maker_checker` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=767 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=767 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_permission: ~744 rows (approximately) /*!40000 ALTER TABLE `m_permission` DISABLE KEYS */; @@ -4014,13 +4014,13 @@ INSERT INTO `m_permission` (`id`, `grouping`, `code`, `entity_name`, `action_nam -- Dumping structure for table mifostenant-reference.m_portfolio_account_associations DROP TABLE IF EXISTS `m_portfolio_account_associations`; CREATE TABLE IF NOT EXISTS `m_portfolio_account_associations` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_account_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, - `linked_loan_account_id` bigint(20) DEFAULT NULL, - `linked_savings_account_id` bigint(20) DEFAULT NULL, - `association_type_enum` smallint(1) NOT NULL DEFAULT '1', - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_account_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, + `linked_loan_account_id` BIGINT DEFAULT NULL, + `linked_savings_account_id` BIGINT DEFAULT NULL, + `association_type_enum` SMALLINT NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `account_association_loan_fk` (`loan_account_id`), KEY `account_association_savings_fk` (`savings_account_id`), @@ -4030,7 +4030,7 @@ CREATE TABLE IF NOT EXISTS `m_portfolio_account_associations` ( CONSTRAINT `account_association_savings_fk` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`), CONSTRAINT `linked_loan_fk` FOREIGN KEY (`linked_loan_account_id`) REFERENCES `m_loan` (`id`), CONSTRAINT `linked_savings_fk` FOREIGN KEY (`linked_savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_portfolio_account_associations: ~0 rows (approximately) /*!40000 ALTER TABLE `m_portfolio_account_associations` DISABLE KEYS */; @@ -4040,24 +4040,24 @@ CREATE TABLE IF NOT EXISTS `m_portfolio_account_associations` ( -- Dumping structure for table mifostenant-reference.m_portfolio_command_source DROP TABLE IF EXISTS `m_portfolio_command_source`; CREATE TABLE IF NOT EXISTS `m_portfolio_command_source` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `action_name` varchar(50) NOT NULL, `entity_name` varchar(50) NOT NULL, - `office_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `loan_id` bigint(20) DEFAULT NULL, - `savings_account_id` bigint(20) DEFAULT NULL, + `office_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `loan_id` BIGINT DEFAULT NULL, + `savings_account_id` BIGINT DEFAULT NULL, `api_get_url` varchar(100) NOT NULL, - `resource_id` bigint(20) DEFAULT NULL, - `subresource_id` bigint(20) DEFAULT NULL, + `resource_id` BIGINT DEFAULT NULL, + `subresource_id` BIGINT DEFAULT NULL, `command_as_json` text NOT NULL, - `maker_id` bigint(20) NOT NULL, + `maker_id` BIGINT NOT NULL, `made_on_date` datetime NOT NULL, - `checker_id` bigint(20) DEFAULT NULL, + `checker_id` BIGINT DEFAULT NULL, `checked_on_date` datetime DEFAULT NULL, - `processing_result_enum` smallint(5) NOT NULL, - `product_id` bigint(20) DEFAULT NULL, + `processing_result_enum` SMALLINT NOT NULL, + `product_id` BIGINT DEFAULT NULL, `transaction_id` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_maker_m_appuser` (`maker_id`), @@ -4073,7 +4073,7 @@ CREATE TABLE IF NOT EXISTS `m_portfolio_command_source` ( KEY `loan_id` (`office_id`), CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_portfolio_command_source: ~72 rows (approximately) /*!40000 ALTER TABLE `m_portfolio_command_source` DISABLE KEYS */; @@ -4156,61 +4156,61 @@ INSERT INTO `m_portfolio_command_source` (`id`, `action_name`, `entity_name`, `o -- Dumping structure for table mifostenant-reference.m_product_loan DROP TABLE IF EXISTS `m_product_loan`; CREATE TABLE IF NOT EXISTS `m_product_loan` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `short_name` varchar(4) NOT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `principal_amount` decimal(19,6) DEFAULT NULL, `min_principal_amount` decimal(19,6) DEFAULT NULL, `max_principal_amount` decimal(19,6) DEFAULT NULL, `arrearstolerance_amount` decimal(19,6) DEFAULT NULL, `name` varchar(100) NOT NULL, `description` varchar(500) DEFAULT NULL, - `fund_id` bigint(20) DEFAULT NULL, + `fund_id` BIGINT DEFAULT NULL, `is_linked_to_floating_interest_rates` bit(1) NOT NULL DEFAULT b'0', `allow_variabe_installments` bit(1) NOT NULL DEFAULT b'0', `nominal_interest_rate_per_period` decimal(19,6) DEFAULT NULL, `min_nominal_interest_rate_per_period` decimal(19,6) DEFAULT NULL, `max_nominal_interest_rate_per_period` decimal(19,6) DEFAULT NULL, - `interest_period_frequency_enum` smallint(5) DEFAULT NULL, + `interest_period_frequency_enum` SMALLINT DEFAULT NULL, `annual_nominal_interest_rate` decimal(19,6) DEFAULT NULL, - `interest_method_enum` smallint(5) NOT NULL, - `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1', - `allow_partial_period_interest_calcualtion` tinyint(1) NOT NULL DEFAULT '0', - `repay_every` smallint(5) NOT NULL, - `repayment_period_frequency_enum` smallint(5) NOT NULL, - `number_of_repayments` smallint(5) NOT NULL, - `min_number_of_repayments` smallint(5) DEFAULT NULL, - `max_number_of_repayments` smallint(5) DEFAULT NULL, - `grace_on_principal_periods` smallint(5) DEFAULT NULL, - `recurring_moratorium_principal_periods` smallint(5) DEFAULT NULL, - `grace_on_interest_periods` smallint(5) DEFAULT NULL, - `grace_interest_free_periods` smallint(5) DEFAULT NULL, - `amortization_method_enum` smallint(5) NOT NULL, - `accounting_type` smallint(5) NOT NULL, - `loan_transaction_strategy_id` bigint(20) DEFAULT NULL, + `interest_method_enum` SMALLINT NOT NULL, + `interest_calculated_in_period_enum` SMALLINT NOT NULL DEFAULT '1', + `allow_partial_period_interest_calcualtion` tinyint NOT NULL DEFAULT '0', + `repay_every` SMALLINT NOT NULL, + `repayment_period_frequency_enum` SMALLINT NOT NULL, + `number_of_repayments` SMALLINT NOT NULL, + `min_number_of_repayments` SMALLINT DEFAULT NULL, + `max_number_of_repayments` SMALLINT DEFAULT NULL, + `grace_on_principal_periods` SMALLINT DEFAULT NULL, + `recurring_moratorium_principal_periods` SMALLINT DEFAULT NULL, + `grace_on_interest_periods` SMALLINT DEFAULT NULL, + `grace_interest_free_periods` SMALLINT DEFAULT NULL, + `amortization_method_enum` SMALLINT NOT NULL, + `accounting_type` SMALLINT NOT NULL, + `loan_transaction_strategy_id` BIGINT DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, - `include_in_borrower_cycle` tinyint(1) NOT NULL DEFAULT '0', - `use_borrower_cycle` tinyint(1) NOT NULL DEFAULT '0', + `include_in_borrower_cycle` tinyint NOT NULL DEFAULT '0', + `use_borrower_cycle` tinyint NOT NULL DEFAULT '0', `start_date` date DEFAULT NULL, `close_date` date DEFAULT NULL, - `allow_multiple_disbursals` tinyint(1) NOT NULL DEFAULT '0', - `max_disbursals` int(2) DEFAULT NULL, + `allow_multiple_disbursals` tinyint NOT NULL DEFAULT '0', + `max_disbursals` INT DEFAULT NULL, `max_outstanding_loan_balance` decimal(19,6) DEFAULT NULL, - `grace_on_arrears_ageing` smallint(5) DEFAULT NULL, - `overdue_days_for_npa` smallint(5) DEFAULT NULL, - `days_in_month_enum` smallint(5) NOT NULL DEFAULT '1', - `days_in_year_enum` smallint(5) NOT NULL DEFAULT '1', - `interest_recalculation_enabled` tinyint(4) NOT NULL DEFAULT '0', - `min_days_between_disbursal_and_first_repayment` int(3) DEFAULT NULL, - `hold_guarantee_funds` tinyint(1) NOT NULL DEFAULT '0', + `grace_on_arrears_ageing` SMALLINT DEFAULT NULL, + `overdue_days_for_npa` SMALLINT DEFAULT NULL, + `days_in_month_enum` SMALLINT NOT NULL DEFAULT '1', + `days_in_year_enum` SMALLINT NOT NULL DEFAULT '1', + `interest_recalculation_enabled` TINYINT NOT NULL DEFAULT '0', + `min_days_between_disbursal_and_first_repayment` INT DEFAULT NULL, + `hold_guarantee_funds` tinyint NOT NULL DEFAULT '0', `principal_threshold_for_last_installment` decimal(5,2) NOT NULL DEFAULT '50.00', - `account_moves_out_of_npa_only_on_arrears_completion` tinyint(1) NOT NULL DEFAULT '0', - `can_define_fixed_emi_amount` tinyint(1) NOT NULL DEFAULT '0', + `account_moves_out_of_npa_only_on_arrears_completion` tinyint NOT NULL DEFAULT '0', + `can_define_fixed_emi_amount` tinyint NOT NULL DEFAULT '0', `instalment_amount_in_multiples_of` decimal(19,6) DEFAULT NULL, - `can_use_for_topup` tinyint(1) NOT NULL DEFAULT '0', - `sync_expected_with_disbursement_date` tinyint(4) DEFAULT '0', + `can_use_for_topup` tinyint NOT NULL DEFAULT '0', + `sync_expected_with_disbursement_date` TINYINT DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`), UNIQUE KEY `unq_short_name` (`short_name`), @@ -4219,7 +4219,7 @@ CREATE TABLE IF NOT EXISTS `m_product_loan` ( KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`), CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`), CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_product_loan: ~1 rows (approximately) /*!40000 ALTER TABLE `m_product_loan` DISABLE KEYS */; @@ -4231,13 +4231,13 @@ INSERT INTO `m_product_loan` (`id`, `short_name`, `currency_code`, `currency_dig -- Dumping structure for table mifostenant-reference.m_product_loan_charge DROP TABLE IF EXISTS `m_product_loan_charge`; CREATE TABLE IF NOT EXISTS `m_product_loan_charge` ( - `product_loan_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_loan_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_loan_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_product_loan_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_charge` DISABLE KEYS */; @@ -4249,20 +4249,20 @@ INSERT INTO `m_product_loan_charge` (`product_loan_id`, `charge_id`) VALUES -- Dumping structure for table mifostenant-reference.m_product_loan_configurable_attributes DROP TABLE IF EXISTS `m_product_loan_configurable_attributes`; CREATE TABLE IF NOT EXISTS `m_product_loan_configurable_attributes` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL, - `amortization_method_enum` tinyint(4) NOT NULL DEFAULT '1', - `interest_method_enum` tinyint(4) NOT NULL DEFAULT '1', - `loan_transaction_strategy_id` tinyint(4) NOT NULL DEFAULT '1', - `interest_calculated_in_period_enum` tinyint(4) NOT NULL DEFAULT '1', - `arrearstolerance_amount` tinyint(4) NOT NULL DEFAULT '1', - `repay_every` tinyint(4) NOT NULL DEFAULT '1', - `moratorium` tinyint(4) NOT NULL DEFAULT '1', - `grace_on_arrears_ageing` tinyint(4) NOT NULL DEFAULT '1', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, + `amortization_method_enum` TINYINT NOT NULL DEFAULT '1', + `interest_method_enum` TINYINT NOT NULL DEFAULT '1', + `loan_transaction_strategy_id` TINYINT NOT NULL DEFAULT '1', + `interest_calculated_in_period_enum` TINYINT NOT NULL DEFAULT '1', + `arrearstolerance_amount` TINYINT NOT NULL DEFAULT '1', + `repay_every` TINYINT NOT NULL DEFAULT '1', + `moratorium` TINYINT NOT NULL DEFAULT '1', + `grace_on_arrears_ageing` TINYINT NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `fk_m_product_loan_configurable_attributes_0001` (`loan_product_id`), CONSTRAINT `fk_m_product_loan_configurable_attributes_0001` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_product_loan_configurable_attributes: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_configurable_attributes` DISABLE KEYS */; @@ -4274,9 +4274,9 @@ INSERT INTO `m_product_loan_configurable_attributes` (`id`, `loan_product_id`, ` -- Dumping structure for table mifostenant-reference.m_product_loan_floating_rates DROP TABLE IF EXISTS `m_product_loan_floating_rates`; CREATE TABLE IF NOT EXISTS `m_product_loan_floating_rates` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL, - `floating_rates_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, + `floating_rates_id` BIGINT NOT NULL, `interest_rate_differential` decimal(19,6) NOT NULL DEFAULT '0.000000', `min_differential_lending_rate` decimal(19,6) NOT NULL DEFAULT '0.000000', `default_differential_lending_rate` decimal(19,6) NOT NULL DEFAULT '0.000000', @@ -4287,7 +4287,7 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_floating_rates` ( KEY `FK_mappings_m_floating_rates_id` (`floating_rates_id`), CONSTRAINT `FK_mappings_m_floating_rates_id` FOREIGN KEY (`floating_rates_id`) REFERENCES `m_floating_rates` (`id`), CONSTRAINT `FK_mappings_m_product_loan_id` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_product_loan_floating_rates: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_floating_rates` DISABLE KEYS */; @@ -4297,15 +4297,15 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_floating_rates` ( -- Dumping structure for table mifostenant-reference.m_product_loan_guarantee_details DROP TABLE IF EXISTS `m_product_loan_guarantee_details`; CREATE TABLE IF NOT EXISTS `m_product_loan_guarantee_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, `mandatory_guarantee` decimal(19,5) NOT NULL, `minimum_guarantee_from_own_funds` decimal(19,5) DEFAULT NULL, `minimum_guarantee_from_guarantor_funds` decimal(19,5) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_guarantee_details_loan_product` (`loan_product_id`), CONSTRAINT `FK_guarantee_details_loan_product` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_product_loan_guarantee_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_guarantee_details` DISABLE KEYS */; @@ -4315,24 +4315,24 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_guarantee_details` ( -- Dumping structure for table mifostenant-reference.m_product_loan_recalculation_details DROP TABLE IF EXISTS `m_product_loan_recalculation_details`; CREATE TABLE IF NOT EXISTS `m_product_loan_recalculation_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, - `compound_type_enum` smallint(5) NOT NULL, - `reschedule_strategy_enum` smallint(5) NOT NULL, - `rest_frequency_type_enum` smallint(1) NOT NULL, - `rest_frequency_interval` smallint(3) NOT NULL DEFAULT '0', - `arrears_based_on_original_schedule` tinyint(1) NOT NULL DEFAULT '0', - `pre_close_interest_calculation_strategy` smallint(3) NOT NULL DEFAULT '1', - `compounding_frequency_type_enum` smallint(1) DEFAULT NULL, - `compounding_frequency_interval` smallint(3) DEFAULT NULL, - `rest_frequency_nth_day_enum` int(5) DEFAULT NULL, - `rest_frequency_on_day` int(5) DEFAULT NULL, - `rest_frequency_weekday_enum` int(5) DEFAULT NULL, - `compounding_frequency_nth_day_enum` int(5) DEFAULT NULL, - `compounding_frequency_on_day` int(5) DEFAULT NULL, - `compounding_frequency_weekday_enum` int(5) DEFAULT NULL, - `is_compounding_to_be_posted_as_transaction` tinyint(1) NOT NULL DEFAULT '0', - `allow_compounding_on_eod` tinyint(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `compound_type_enum` SMALLINT NOT NULL, + `reschedule_strategy_enum` SMALLINT NOT NULL, + `rest_frequency_type_enum` SMALLINT NOT NULL, + `rest_frequency_interval` SMALLINT NOT NULL DEFAULT '0', + `arrears_based_on_original_schedule` tinyint NOT NULL DEFAULT '0', + `pre_close_interest_calculation_strategy` SMALLINT NOT NULL DEFAULT '1', + `compounding_frequency_type_enum` SMALLINT DEFAULT NULL, + `compounding_frequency_interval` SMALLINT DEFAULT NULL, + `rest_frequency_nth_day_enum` INT DEFAULT NULL, + `rest_frequency_on_day` INT DEFAULT NULL, + `rest_frequency_weekday_enum` INT DEFAULT NULL, + `compounding_frequency_nth_day_enum` INT DEFAULT NULL, + `compounding_frequency_on_day` INT DEFAULT NULL, + `compounding_frequency_weekday_enum` INT DEFAULT NULL, + `is_compounding_to_be_posted_as_transaction` tinyint NOT NULL DEFAULT '0', + `allow_compounding_on_eod` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FK_m_product_loan_m_product_loan_recalculation_details` (`product_id`), CONSTRAINT `FK_m_product_loan_m_product_loan_recalculation_details` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`) @@ -4346,14 +4346,14 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_recalculation_details` ( -- Dumping structure for table mifostenant-reference.m_product_loan_variable_installment_config DROP TABLE IF EXISTS `m_product_loan_variable_installment_config`; CREATE TABLE IF NOT EXISTS `m_product_loan_variable_installment_config` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL, - `minimum_gap` int(4) NOT NULL, - `maximum_gap` int(4) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL, + `minimum_gap` INT NOT NULL, + `maximum_gap` INT NOT NULL, PRIMARY KEY (`id`), KEY `FK_mappings_m_variable_product_loan_id` (`loan_product_id`), CONSTRAINT `FK_mappings_m_variable_product_loan_id` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_product_loan_variable_installment_config: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_variable_installment_config` DISABLE KEYS */; @@ -4363,18 +4363,18 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_variable_installment_config` ( -- Dumping structure for table mifostenant-reference.m_product_loan_variations_borrower_cycle DROP TABLE IF EXISTS `m_product_loan_variations_borrower_cycle`; CREATE TABLE IF NOT EXISTS `m_product_loan_variations_borrower_cycle` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `loan_product_id` bigint(20) NOT NULL DEFAULT '0', - `borrower_cycle_number` int(3) NOT NULL DEFAULT '0', - `value_condition` int(1) NOT NULL DEFAULT '0', - `param_type` int(1) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `loan_product_id` BIGINT NOT NULL DEFAULT '0', + `borrower_cycle_number` INT NOT NULL DEFAULT '0', + `value_condition` INT NOT NULL DEFAULT '0', + `param_type` INT NOT NULL DEFAULT '0', `default_value` decimal(19,6) NOT NULL DEFAULT '0.000000', `max_value` decimal(19,6) DEFAULT NULL, `min_value` decimal(19,6) DEFAULT NULL, PRIMARY KEY (`id`), KEY `borrower_cycle_loan_product_FK` (`loan_product_id`), CONSTRAINT `borrower_cycle_loan_product_FK` FOREIGN KEY (`loan_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_product_loan_variations_borrower_cycle: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_loan_variations_borrower_cycle` DISABLE KEYS */; @@ -4384,15 +4384,15 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_variations_borrower_cycle` ( -- Dumping structure for table mifostenant-reference.m_product_mix DROP TABLE IF EXISTS `m_product_mix`; CREATE TABLE IF NOT EXISTS `m_product_mix` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, - `restricted_product_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, + `restricted_product_id` BIGINT NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_product_mix_product_id_to_m_product_loan` (`product_id`), KEY `FK_m_product_mix_restricted_product_id_to_m_product_loan` (`restricted_product_id`), CONSTRAINT `FK_m_product_mix_product_id_to_m_product_loan` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`), CONSTRAINT `FK_m_product_mix_restricted_product_id_to_m_product_loan` FOREIGN KEY (`restricted_product_id`) REFERENCES `m_product_loan` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_product_mix: ~0 rows (approximately) /*!40000 ALTER TABLE `m_product_mix` DISABLE KEYS */; @@ -4402,11 +4402,11 @@ CREATE TABLE IF NOT EXISTS `m_product_mix` ( -- Dumping structure for table mifostenant-reference.m_provisioning_criteria DROP TABLE IF EXISTS `m_provisioning_criteria`; CREATE TABLE IF NOT EXISTS `m_provisioning_criteria` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `criteria_name` varchar(200) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `criteria_name` (`criteria_name`), @@ -4414,7 +4414,7 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_criteria` ( KEY `lastmodifiedby_id` (`lastmodifiedby_id`), CONSTRAINT `m_provisioning_criteria_ibfk_1` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_provisioning_criteria_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_provisioning_criteria: ~0 rows (approximately) /*!40000 ALTER TABLE `m_provisioning_criteria` DISABLE KEYS */; @@ -4424,14 +4424,14 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_criteria` ( -- Dumping structure for table mifostenant-reference.m_provisioning_criteria_definition DROP TABLE IF EXISTS `m_provisioning_criteria_definition`; CREATE TABLE IF NOT EXISTS `m_provisioning_criteria_definition` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `criteria_id` bigint(20) NOT NULL, - `category_id` bigint(20) NOT NULL, - `min_age` bigint(20) NOT NULL, - `max_age` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `criteria_id` BIGINT NOT NULL, + `category_id` BIGINT NOT NULL, + `min_age` BIGINT NOT NULL, + `max_age` BIGINT NOT NULL, `provision_percentage` decimal(5,2) NOT NULL, - `liability_account` bigint(20) DEFAULT NULL, - `expense_account` bigint(20) DEFAULT NULL, + `liability_account` BIGINT DEFAULT NULL, + `expense_account` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `criteria_id` (`criteria_id`), KEY `category_id` (`category_id`), @@ -4441,7 +4441,7 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_criteria_definition` ( CONSTRAINT `m_provisioning_criteria_definition_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `m_provision_category` (`id`), CONSTRAINT `m_provisioning_criteria_definition_ibfk_3` FOREIGN KEY (`liability_account`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `m_provisioning_criteria_definition_ibfk_4` FOREIGN KEY (`expense_account`) REFERENCES `acc_gl_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_provisioning_criteria_definition: ~0 rows (approximately) /*!40000 ALTER TABLE `m_provisioning_criteria_definition` DISABLE KEYS */; @@ -4451,18 +4451,18 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_criteria_definition` ( -- Dumping structure for table mifostenant-reference.m_provisioning_history DROP TABLE IF EXISTS `m_provisioning_history`; CREATE TABLE IF NOT EXISTS `m_provisioning_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `journal_entry_created` bit(1) DEFAULT b'0', - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` date DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `createdby_id` (`createdby_id`), KEY `lastmodifiedby_id` (`lastmodifiedby_id`), CONSTRAINT `m_provisioning_history_ibfk_1` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_provisioning_history_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_provisioning_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_provisioning_history` DISABLE KEYS */; @@ -4472,12 +4472,12 @@ CREATE TABLE IF NOT EXISTS `m_provisioning_history` ( -- Dumping structure for table mifostenant-reference.m_provision_category DROP TABLE IF EXISTS `m_provision_category`; CREATE TABLE IF NOT EXISTS `m_provision_category` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `category_name` varchar(100) NOT NULL, `description` varchar(300) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `category_name` (`category_name`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_provision_category: ~4 rows (approximately) /*!40000 ALTER TABLE `m_provision_category` DISABLE KEYS */; @@ -4492,30 +4492,30 @@ INSERT INTO `m_provision_category` (`id`, `category_name`, `description`) VALUES -- Dumping structure for table mifostenant-reference.m_report_mailing_job DROP TABLE IF EXISTS `m_report_mailing_job`; CREATE TABLE IF NOT EXISTS `m_report_mailing_job` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` text, `start_datetime` datetime NOT NULL, `recurrence` varchar(100) DEFAULT NULL, `created_date` date NOT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `lastmodified_date` date DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `email_recipients` text NOT NULL, `email_subject` varchar(100) NOT NULL, `email_message` text NOT NULL, `email_attachment_file_format` varchar(10) NOT NULL, - `stretchy_report_id` int(11) NOT NULL, + `stretchy_report_id` INT NOT NULL, `stretchy_report_param_map` text, `previous_run_datetime` datetime DEFAULT NULL, `next_run_datetime` datetime DEFAULT NULL, `previous_run_status` varchar(10) DEFAULT NULL, `previous_run_error_log` text, `previous_run_error_message` text, - `number_of_runs` int(11) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL DEFAULT '0', - `is_deleted` tinyint(1) NOT NULL DEFAULT '0', - `run_as_userid` bigint(20) NOT NULL, + `number_of_runs` INT NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL DEFAULT '0', + `is_deleted` tinyint NOT NULL DEFAULT '0', + `run_as_userid` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_name` (`name`), KEY `createdby_id` (`createdby_id`), @@ -4526,7 +4526,7 @@ CREATE TABLE IF NOT EXISTS `m_report_mailing_job` ( CONSTRAINT `m_report_mailing_job_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_report_mailing_job_ibfk_3` FOREIGN KEY (`stretchy_report_id`) REFERENCES `stretchy_report` (`id`), CONSTRAINT `m_report_mailing_job_ibfk_4` FOREIGN KEY (`run_as_userid`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_report_mailing_job: ~0 rows (approximately) /*!40000 ALTER TABLE `m_report_mailing_job` DISABLE KEYS */; @@ -4536,12 +4536,12 @@ CREATE TABLE IF NOT EXISTS `m_report_mailing_job` ( -- Dumping structure for table mifostenant-reference.m_report_mailing_job_configuration DROP TABLE IF EXISTS `m_report_mailing_job_configuration`; CREATE TABLE IF NOT EXISTS `m_report_mailing_job_configuration` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `value` varchar(200) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_report_mailing_job_configuration: ~4 rows (approximately) /*!40000 ALTER TABLE `m_report_mailing_job_configuration` DISABLE KEYS */; @@ -4556,8 +4556,8 @@ INSERT INTO `m_report_mailing_job_configuration` (`id`, `name`, `value`) VALUES -- Dumping structure for table mifostenant-reference.m_report_mailing_job_run_history DROP TABLE IF EXISTS `m_report_mailing_job_run_history`; CREATE TABLE IF NOT EXISTS `m_report_mailing_job_run_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `job_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `job_id` BIGINT NOT NULL, `start_datetime` datetime NOT NULL, `end_datetime` datetime NOT NULL, `status` varchar(10) NOT NULL, @@ -4566,7 +4566,7 @@ CREATE TABLE IF NOT EXISTS `m_report_mailing_job_run_history` ( PRIMARY KEY (`id`), KEY `job_id` (`job_id`), CONSTRAINT `m_report_mailing_job_run_history_ibfk_1` FOREIGN KEY (`job_id`) REFERENCES `m_report_mailing_job` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_report_mailing_job_run_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_report_mailing_job_run_history` DISABLE KEYS */; @@ -4576,13 +4576,13 @@ CREATE TABLE IF NOT EXISTS `m_report_mailing_job_run_history` ( -- Dumping structure for table mifostenant-reference.m_role DROP TABLE IF EXISTS `m_role`; CREATE TABLE IF NOT EXISTS `m_role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `description` varchar(500) NOT NULL, - `is_disabled` tinyint(1) NOT NULL DEFAULT '0', + `is_disabled` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_role: ~0 rows (approximately) /*!40000 ALTER TABLE `m_role` DISABLE KEYS */; @@ -4594,14 +4594,14 @@ INSERT INTO `m_role` (`id`, `name`, `description`, `is_disabled`) VALUES -- Dumping structure for table mifostenant-reference.m_role_permission DROP TABLE IF EXISTS `m_role_permission`; CREATE TABLE IF NOT EXISTS `m_role_permission` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` BIGINT NOT NULL, + `permission_id` BIGINT NOT NULL, PRIMARY KEY (`role_id`,`permission_id`), KEY `FK8DEDB04815CEC7AB` (`role_id`), KEY `FK8DEDB048103B544B` (`permission_id`), CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`), CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_role_permission: ~0 rows (approximately) /*!40000 ALTER TABLE `m_role_permission` DISABLE KEYS */; @@ -4613,42 +4613,42 @@ INSERT INTO `m_role_permission` (`role_id`, `permission_id`) VALUES -- Dumping structure for table mifostenant-reference.m_savings_account DROP TABLE IF EXISTS `m_savings_account`; CREATE TABLE IF NOT EXISTS `m_savings_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(20) NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `group_id` bigint(20) DEFAULT NULL, - `product_id` bigint(20) DEFAULT NULL, - `field_officer_id` bigint(20) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', - `sub_status_enum` smallint(5) NOT NULL DEFAULT '0', - `account_type_enum` smallint(5) NOT NULL DEFAULT '1', - `deposit_type_enum` smallint(5) NOT NULL DEFAULT '100', + `client_id` BIGINT DEFAULT NULL, + `group_id` BIGINT DEFAULT NULL, + `product_id` BIGINT DEFAULT NULL, + `field_officer_id` BIGINT DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', + `sub_status_enum` SMALLINT NOT NULL DEFAULT '0', + `account_type_enum` SMALLINT NOT NULL DEFAULT '1', + `deposit_type_enum` SMALLINT NOT NULL DEFAULT '100', `submittedon_date` date NOT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `rejectedon_date` date DEFAULT NULL, - `rejectedon_userid` bigint(20) DEFAULT NULL, + `rejectedon_userid` BIGINT DEFAULT NULL, `withdrawnon_date` date DEFAULT NULL, - `withdrawnon_userid` bigint(20) DEFAULT NULL, + `withdrawnon_userid` BIGINT DEFAULT NULL, `activatedon_date` date DEFAULT NULL, - `activatedon_userid` bigint(20) DEFAULT NULL, + `activatedon_userid` BIGINT DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `nominal_annual_interest_rate` decimal(19,6) NOT NULL, - `interest_compounding_period_enum` smallint(5) NOT NULL, - `interest_posting_period_enum` smallint(5) NOT NULL DEFAULT '4', - `interest_calculation_type_enum` smallint(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` smallint(5) NOT NULL, + `interest_compounding_period_enum` SMALLINT NOT NULL, + `interest_posting_period_enum` SMALLINT NOT NULL DEFAULT '4', + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, - `withdrawal_fee_for_transfer` tinyint(4) DEFAULT '1', - `allow_overdraft` tinyint(1) NOT NULL DEFAULT '0', + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, + `withdrawal_fee_for_transfer` TINYINT DEFAULT '1', + `allow_overdraft` tinyint NOT NULL DEFAULT '0', `overdraft_limit` decimal(19,6) DEFAULT NULL, `nominal_annual_interest_rate_overdraft` decimal(19,6) DEFAULT '0.000000', `min_overdraft_for_interest_calculation` decimal(19,6) DEFAULT '0.000000', @@ -4665,13 +4665,13 @@ CREATE TABLE IF NOT EXISTS `m_savings_account` ( `total_withhold_tax_derived` decimal(19,6) DEFAULT NULL, `account_balance_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', `min_required_balance` decimal(19,6) DEFAULT NULL, - `enforce_min_required_balance` tinyint(1) NOT NULL DEFAULT '0', + `enforce_min_required_balance` tinyint NOT NULL DEFAULT '0', `min_balance_for_interest_calculation` decimal(19,6) DEFAULT NULL, `start_interest_calculation_date` date DEFAULT NULL, `on_hold_funds_derived` decimal(19,6) DEFAULT NULL, - `version` int(15) NOT NULL DEFAULT '1', - `withhold_tax` tinyint(4) NOT NULL DEFAULT '0', - `tax_group_id` bigint(20) DEFAULT NULL, + `version` INT NOT NULL DEFAULT '1', + `withhold_tax` TINYINT NOT NULL DEFAULT '0', + `tax_group_id` BIGINT DEFAULT NULL, `last_interest_calculation_date` date DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sa_account_no_UNIQUE` (`account_no`), @@ -4684,7 +4684,7 @@ CREATE TABLE IF NOT EXISTS `m_savings_account` ( CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`), CONSTRAINT `FK_savings_account_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_account: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account` DISABLE KEYS */; @@ -4694,16 +4694,16 @@ CREATE TABLE IF NOT EXISTS `m_savings_account` ( -- Dumping structure for table mifostenant-reference.m_savings_account_charge DROP TABLE IF EXISTS `m_savings_account_charge`; CREATE TABLE IF NOT EXISTS `m_savings_account_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `is_penalty` tinyint(1) NOT NULL DEFAULT '0', - `charge_time_enum` smallint(5) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `is_penalty` tinyint NOT NULL DEFAULT '0', + `charge_time_enum` SMALLINT NOT NULL, `charge_due_date` date DEFAULT NULL, - `fee_on_month` smallint(5) DEFAULT NULL, - `fee_on_day` smallint(5) DEFAULT NULL, - `fee_interval` smallint(5) DEFAULT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, + `fee_on_month` SMALLINT DEFAULT NULL, + `fee_on_day` SMALLINT DEFAULT NULL, + `fee_interval` SMALLINT DEFAULT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `amount` decimal(19,6) NOT NULL, @@ -4711,16 +4711,16 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', + `is_active` tinyint NOT NULL DEFAULT '1', `inactivated_on_date` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_savings_account_charge_ibfk_2` (`savings_account_id`), CONSTRAINT `m_savings_account_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_savings_account_charge_ibfk_2` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_account_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_charge` DISABLE KEYS */; @@ -4730,16 +4730,16 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_charge` ( -- Dumping structure for table mifostenant-reference.m_savings_account_charge_paid_by DROP TABLE IF EXISTS `m_savings_account_charge_paid_by`; CREATE TABLE IF NOT EXISTS `m_savings_account_charge_paid_by` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_transaction_id` bigint(20) NOT NULL, - `savings_account_charge_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_transaction_id` BIGINT NOT NULL, + `savings_account_charge_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK__m_savings_account_transaction` (`savings_account_transaction_id`), KEY `FK__m_savings_account_charge` (`savings_account_charge_id`), CONSTRAINT `FK__m_savings_account_charge` FOREIGN KEY (`savings_account_charge_id`) REFERENCES `m_savings_account_charge` (`id`), CONSTRAINT `FK__m_savings_account_transaction` FOREIGN KEY (`savings_account_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_account_charge_paid_by: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_charge_paid_by` DISABLE KEYS */; @@ -4749,17 +4749,17 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_charge_paid_by` ( -- Dumping structure for table mifostenant-reference.m_savings_account_interest_rate_chart DROP TABLE IF EXISTS `m_savings_account_interest_rate_chart`; CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_chart` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, `name` varchar(100) DEFAULT NULL, `description` varchar(200) DEFAULT NULL, `from_date` date NOT NULL, `end_date` date DEFAULT NULL, - `is_primary_grouping_by_amount` tinyint(4) NOT NULL DEFAULT '0', + `is_primary_grouping_by_amount` TINYINT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `FKSAIRC00000000000001` (`savings_account_id`), CONSTRAINT `FKSAIRC00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_account_interest_rate_chart: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_interest_rate_chart` DISABLE KEYS */; @@ -4769,12 +4769,12 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_chart` ( -- Dumping structure for table mifostenant-reference.m_savings_account_interest_rate_slab DROP TABLE IF EXISTS `m_savings_account_interest_rate_slab`; CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_slab` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_interest_rate_chart_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_interest_rate_chart_id` BIGINT NOT NULL, `description` varchar(200) DEFAULT NULL, - `period_type_enum` smallint(5) DEFAULT NULL, - `from_period` int(11) DEFAULT NULL, - `to_period` int(11) DEFAULT NULL, + `period_type_enum` SMALLINT DEFAULT NULL, + `from_period` INT DEFAULT NULL, + `to_period` INT DEFAULT NULL, `amount_range_from` decimal(19,6) DEFAULT NULL, `amount_range_to` decimal(19,6) DEFAULT NULL, `annual_interest_rate` decimal(19,6) NOT NULL, @@ -4782,7 +4782,7 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_slab` ( PRIMARY KEY (`id`), KEY `FKSAIRS00000000000001` (`savings_account_interest_rate_chart_id`), CONSTRAINT `FKSAIRS00000000000001` FOREIGN KEY (`savings_account_interest_rate_chart_id`) REFERENCES `m_savings_account_interest_rate_chart` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_account_interest_rate_slab: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_interest_rate_slab` DISABLE KEYS */; @@ -4792,22 +4792,22 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_interest_rate_slab` ( -- Dumping structure for table mifostenant-reference.m_savings_account_transaction DROP TABLE IF EXISTS `m_savings_account_transaction`; CREATE TABLE IF NOT EXISTS `m_savings_account_transaction` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_account_id` bigint(20) NOT NULL, - `office_id` bigint(20) NOT NULL, - `payment_detail_id` bigint(20) DEFAULT NULL, - `transaction_type_enum` smallint(5) NOT NULL, - `is_reversed` tinyint(1) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_account_id` BIGINT NOT NULL, + `office_id` BIGINT NOT NULL, + `payment_detail_id` BIGINT DEFAULT NULL, + `transaction_type_enum` SMALLINT NOT NULL, + `is_reversed` tinyint NOT NULL, `transaction_date` date NOT NULL, `amount` decimal(19,6) NOT NULL, `overdraft_amount_derived` decimal(19,6) DEFAULT NULL, `balance_end_date_derived` date DEFAULT NULL, - `balance_number_of_days_derived` int(11) DEFAULT NULL, + `balance_number_of_days_derived` INT DEFAULT NULL, `running_balance_derived` decimal(19,6) DEFAULT NULL, `cumulative_balance_derived` decimal(19,6) DEFAULT NULL, `created_date` datetime NOT NULL, - `appuser_id` bigint(20) DEFAULT NULL, - `is_manual` tinyint(1) DEFAULT '0', + `appuser_id` BIGINT DEFAULT NULL, + `is_manual` tinyint DEFAULT '0', PRIMARY KEY (`id`), KEY `FKSAT0000000001` (`savings_account_id`), KEY `FK_m_savings_account_transaction_m_payment_detail` (`payment_detail_id`), @@ -4815,7 +4815,7 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_transaction` ( CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`), CONSTRAINT `FK_m_savings_account_transaction_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`), CONSTRAINT `FK_m_savings_account_transaction_m_payment_detail` FOREIGN KEY (`payment_detail_id`) REFERENCES `m_payment_detail` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_account_transaction: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_transaction` DISABLE KEYS */; @@ -4825,16 +4825,16 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_transaction` ( -- Dumping structure for table mifostenant-reference.m_savings_account_transaction_tax_details DROP TABLE IF EXISTS `m_savings_account_transaction_tax_details`; CREATE TABLE IF NOT EXISTS `m_savings_account_transaction_tax_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `savings_transaction_id` bigint(20) NOT NULL, - `tax_component_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `savings_transaction_id` BIGINT NOT NULL, + `tax_component_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_savings_account_transaction_tax_details_savings_transaction` (`savings_transaction_id`), KEY `FK_savings_account_transaction_tax_details_tax_component` (`tax_component_id`), CONSTRAINT `FK_savings_account_transaction_tax_details_savings_transaction` FOREIGN KEY (`savings_transaction_id`) REFERENCES `m_savings_account_transaction` (`id`), CONSTRAINT `FK_savings_account_transaction_tax_details_tax_component` FOREIGN KEY (`tax_component_id`) REFERENCES `m_tax_component` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_account_transaction_tax_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_account_transaction_tax_details` DISABLE KEYS */; @@ -4844,18 +4844,18 @@ CREATE TABLE IF NOT EXISTS `m_savings_account_transaction_tax_details` ( -- Dumping structure for table mifostenant-reference.m_savings_interest_incentives DROP TABLE IF EXISTS `m_savings_interest_incentives`; CREATE TABLE IF NOT EXISTS `m_savings_interest_incentives` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `deposit_account_interest_rate_slab_id` bigint(20) NOT NULL, - `entiry_type` smallint(2) NOT NULL, - `attribute_name` smallint(2) NOT NULL, - `condition_type` smallint(2) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `deposit_account_interest_rate_slab_id` BIGINT NOT NULL, + `entiry_type` SMALLINT NOT NULL, + `attribute_name` SMALLINT NOT NULL, + `condition_type` SMALLINT NOT NULL, `attribute_value` varchar(50) NOT NULL, - `incentive_type` smallint(2) NOT NULL, + `incentive_type` SMALLINT NOT NULL, `amount` decimal(19,6) NOT NULL, PRIMARY KEY (`id`), KEY `FK_m_savings_interest_incentives_m_savings_interest_rate_slab` (`deposit_account_interest_rate_slab_id`), CONSTRAINT `FK_m_savings_interest_incentives_m_savings_interest_rate_slab` FOREIGN KEY (`deposit_account_interest_rate_slab_id`) REFERENCES `m_savings_account_interest_rate_slab` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_interest_incentives: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_interest_incentives` DISABLE KEYS */; @@ -4865,21 +4865,21 @@ CREATE TABLE IF NOT EXISTS `m_savings_interest_incentives` ( -- Dumping structure for table mifostenant-reference.m_savings_officer_assignment_history DROP TABLE IF EXISTS `m_savings_officer_assignment_history`; CREATE TABLE IF NOT EXISTS `m_savings_officer_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `savings_officer_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `savings_officer_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_m_savings_officer_assignment_history_0001` (`account_id`), KEY `fk_m_savings_officer_assignment_history_0002` (`savings_officer_id`), CONSTRAINT `fk_m_savings_officer_assignment_history_0001` FOREIGN KEY (`account_id`) REFERENCES `m_savings_account` (`id`), CONSTRAINT `fk_m_savings_officer_assignment_history_0002` FOREIGN KEY (`savings_officer_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_officer_assignment_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_officer_assignment_history` DISABLE KEYS */; @@ -4889,45 +4889,45 @@ CREATE TABLE IF NOT EXISTS `m_savings_officer_assignment_history` ( -- Dumping structure for table mifostenant-reference.m_savings_product DROP TABLE IF EXISTS `m_savings_product`; CREATE TABLE IF NOT EXISTS `m_savings_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `short_name` varchar(4) NOT NULL, `description` varchar(500) NOT NULL, - `deposit_type_enum` smallint(5) NOT NULL DEFAULT '100', + `deposit_type_enum` SMALLINT NOT NULL DEFAULT '100', `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, `nominal_annual_interest_rate` decimal(19,6) NOT NULL, - `interest_compounding_period_enum` smallint(5) NOT NULL, - `interest_posting_period_enum` smallint(5) NOT NULL DEFAULT '4', - `interest_calculation_type_enum` smallint(5) NOT NULL, - `interest_calculation_days_in_year_type_enum` smallint(5) NOT NULL, + `interest_compounding_period_enum` SMALLINT NOT NULL, + `interest_posting_period_enum` SMALLINT NOT NULL DEFAULT '4', + `interest_calculation_type_enum` SMALLINT NOT NULL, + `interest_calculation_days_in_year_type_enum` SMALLINT NOT NULL, `min_required_opening_balance` decimal(19,6) DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, - `accounting_type` smallint(5) NOT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, + `accounting_type` SMALLINT NOT NULL, `withdrawal_fee_amount` decimal(19,6) DEFAULT NULL, - `withdrawal_fee_type_enum` smallint(5) DEFAULT NULL, - `withdrawal_fee_for_transfer` tinyint(4) DEFAULT '1', - `allow_overdraft` tinyint(1) NOT NULL DEFAULT '0', + `withdrawal_fee_type_enum` SMALLINT DEFAULT NULL, + `withdrawal_fee_for_transfer` TINYINT DEFAULT '1', + `allow_overdraft` tinyint NOT NULL DEFAULT '0', `overdraft_limit` decimal(19,6) DEFAULT NULL, `nominal_annual_interest_rate_overdraft` decimal(19,6) DEFAULT '0.000000', `min_overdraft_for_interest_calculation` decimal(19,6) DEFAULT '0.000000', `min_required_balance` decimal(19,6) DEFAULT NULL, - `enforce_min_required_balance` tinyint(1) NOT NULL DEFAULT '0', + `enforce_min_required_balance` tinyint NOT NULL DEFAULT '0', `min_balance_for_interest_calculation` decimal(19,6) DEFAULT NULL, - `withhold_tax` tinyint(4) NOT NULL DEFAULT '0', - `tax_group_id` bigint(20) DEFAULT NULL, - `is_dormancy_tracking_active` smallint(1) DEFAULT NULL, - `days_to_inactive` int(11) DEFAULT NULL, - `days_to_dormancy` int(11) DEFAULT NULL, - `days_to_escheat` int(11) DEFAULT NULL, + `withhold_tax` TINYINT NOT NULL DEFAULT '0', + `tax_group_id` BIGINT DEFAULT NULL, + `is_dormancy_tracking_active` SMALLINT DEFAULT NULL, + `days_to_inactive` INT DEFAULT NULL, + `days_to_dormancy` INT DEFAULT NULL, + `days_to_escheat` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sp_unq_name` (`name`), UNIQUE KEY `sp_unq_short_name` (`short_name`), KEY `FK_savings_product_tax_group` (`tax_group_id`), CONSTRAINT `FK_savings_product_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_product: ~1 rows (approximately) /*!40000 ALTER TABLE `m_savings_product` DISABLE KEYS */; @@ -4939,13 +4939,13 @@ INSERT INTO `m_savings_product` (`id`, `name`, `short_name`, `description`, `dep -- Dumping structure for table mifostenant-reference.m_savings_product_charge DROP TABLE IF EXISTS `m_savings_product_charge`; CREATE TABLE IF NOT EXISTS `m_savings_product_charge` ( - `savings_product_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `savings_product_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`savings_product_id`,`charge_id`), KEY `charge_id` (`charge_id`), CONSTRAINT `m_savings_product_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_savings_product_charge_ibfk_2` FOREIGN KEY (`savings_product_id`) REFERENCES `m_savings_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_savings_product_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_savings_product_charge` DISABLE KEYS */; @@ -4955,18 +4955,18 @@ CREATE TABLE IF NOT EXISTS `m_savings_product_charge` ( -- Dumping structure for table mifostenant-reference.m_selfservice_beneficiaries_tpt DROP TABLE IF EXISTS `m_selfservice_beneficiaries_tpt`; CREATE TABLE IF NOT EXISTS `m_selfservice_beneficiaries_tpt` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `app_user_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `app_user_id` BIGINT NOT NULL, `name` varchar(50) NOT NULL, - `office_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, - `account_id` bigint(20) NOT NULL, - `account_type` smallint(4) NOT NULL, - `transfer_limit` bigint(20) DEFAULT '0', + `office_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, + `account_id` BIGINT NOT NULL, + `account_type` SMALLINT NOT NULL, + `transfer_limit` BIGINT DEFAULT '0', `is_active` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`app_user_id`,`is_active`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_selfservice_beneficiaries_tpt: ~0 rows (approximately) /*!40000 ALTER TABLE `m_selfservice_beneficiaries_tpt` DISABLE KEYS */; @@ -4976,15 +4976,15 @@ CREATE TABLE IF NOT EXISTS `m_selfservice_beneficiaries_tpt` ( -- Dumping structure for table mifostenant-reference.m_selfservice_user_client_mapping DROP TABLE IF EXISTS `m_selfservice_user_client_mapping`; CREATE TABLE IF NOT EXISTS `m_selfservice_user_client_mapping` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `appuser_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `appuser_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `appuser_id_client_id` (`appuser_id`,`client_id`), KEY `m_selfservice_client_id` (`client_id`), CONSTRAINT `m_selfservice_appuser_id` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_selfservice_client_id` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_selfservice_user_client_mapping: ~0 rows (approximately) /*!40000 ALTER TABLE `m_selfservice_user_client_mapping` DISABLE KEYS */; @@ -4994,35 +4994,35 @@ CREATE TABLE IF NOT EXISTS `m_selfservice_user_client_mapping` ( -- Dumping structure for table mifostenant-reference.m_share_account DROP TABLE IF EXISTS `m_share_account`; CREATE TABLE IF NOT EXISTS `m_share_account` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `account_no` varchar(50) NOT NULL, - `product_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `product_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', - `total_approved_shares` bigint(20) DEFAULT NULL, - `total_pending_shares` bigint(20) DEFAULT NULL, + `status_enum` SMALLINT NOT NULL DEFAULT '300', + `total_approved_shares` BIGINT DEFAULT NULL, + `total_pending_shares` BIGINT DEFAULT NULL, `submitted_date` date NOT NULL, - `submitted_userid` bigint(20) DEFAULT NULL, + `submitted_userid` BIGINT DEFAULT NULL, `approved_date` date DEFAULT NULL, - `approved_userid` bigint(20) DEFAULT NULL, + `approved_userid` BIGINT DEFAULT NULL, `rejected_date` date DEFAULT NULL, - `rejected_userid` bigint(20) DEFAULT NULL, + `rejected_userid` BIGINT DEFAULT NULL, `activated_date` date DEFAULT NULL, - `activated_userid` bigint(20) DEFAULT NULL, + `activated_userid` BIGINT DEFAULT NULL, `closed_date` date DEFAULT NULL, - `closed_userid` bigint(20) DEFAULT NULL, + `closed_userid` BIGINT DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, - `savings_account_id` bigint(20) NOT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, + `savings_account_id` BIGINT NOT NULL, `minimum_active_period_frequency` decimal(19,6) DEFAULT NULL, - `minimum_active_period_frequency_enum` smallint(5) DEFAULT NULL, + `minimum_active_period_frequency_enum` SMALLINT DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, - `allow_dividends_inactive_clients` smallint(1) DEFAULT '0', + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, + `allow_dividends_inactive_clients` SMALLINT DEFAULT '0', `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `m_share_account_ibfk_1` (`product_id`), @@ -5043,7 +5043,7 @@ CREATE TABLE IF NOT EXISTS `m_share_account` ( CONSTRAINT `m_share_account_ibfk_7` FOREIGN KEY (`closed_userid`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_share_account_ibfk_8` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_share_account_ibfk_9` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_account: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account` DISABLE KEYS */; @@ -5053,12 +5053,12 @@ CREATE TABLE IF NOT EXISTS `m_share_account` ( -- Dumping structure for table mifostenant-reference.m_share_account_charge DROP TABLE IF EXISTS `m_share_account_charge`; CREATE TABLE IF NOT EXISTS `m_share_account_charge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, - `charge_time_enum` smallint(5) NOT NULL, - `charge_calculation_enum` smallint(5) NOT NULL, - `charge_payment_mode_enum` smallint(5) NOT NULL DEFAULT '0', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, + `charge_time_enum` SMALLINT NOT NULL, + `charge_calculation_enum` SMALLINT NOT NULL, + `charge_payment_mode_enum` SMALLINT NOT NULL DEFAULT '0', `calculation_percentage` decimal(19,6) DEFAULT NULL, `calculation_on_amount` decimal(19,6) DEFAULT NULL, `charge_amount_or_percentage` decimal(19,6) DEFAULT NULL, @@ -5067,17 +5067,17 @@ CREATE TABLE IF NOT EXISTS `m_share_account_charge` ( `amount_waived_derived` decimal(19,6) DEFAULT NULL, `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL, `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000', - `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0', - `waived` tinyint(1) NOT NULL DEFAULT '0', + `is_paid_derived` tinyint NOT NULL DEFAULT '0', + `waived` tinyint NOT NULL DEFAULT '0', `min_cap` decimal(19,6) DEFAULT NULL, `max_cap` decimal(19,6) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `charge_id` (`charge_id`), KEY `m_share_account_charge_ibfk_2` (`account_id`), CONSTRAINT `m_share_account_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_share_account_charge_ibfk_2` FOREIGN KEY (`account_id`) REFERENCES `m_share_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_account_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account_charge` DISABLE KEYS */; @@ -5087,16 +5087,16 @@ CREATE TABLE IF NOT EXISTS `m_share_account_charge` ( -- Dumping structure for table mifostenant-reference.m_share_account_charge_paid_by DROP TABLE IF EXISTS `m_share_account_charge_paid_by`; CREATE TABLE IF NOT EXISTS `m_share_account_charge_paid_by` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `share_transaction_id` bigint(20) DEFAULT NULL, - `charge_transaction_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `share_transaction_id` BIGINT DEFAULT NULL, + `charge_transaction_id` BIGINT DEFAULT NULL, `amount` decimal(20,2) NOT NULL, PRIMARY KEY (`id`), KEY `m_share_account_transactions_charge_mapping_ibfk1` (`share_transaction_id`), KEY `m_share_account_transactions_charge_mapping_ibfk2` (`charge_transaction_id`), CONSTRAINT `m_share_account_transactions_charge_mapping_ibfk1` FOREIGN KEY (`share_transaction_id`) REFERENCES `m_share_account_transactions` (`id`), CONSTRAINT `m_share_account_transactions_charge_mapping_ibfk2` FOREIGN KEY (`charge_transaction_id`) REFERENCES `m_share_account_charge` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_account_charge_paid_by: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account_charge_paid_by` DISABLE KEYS */; @@ -5106,18 +5106,18 @@ CREATE TABLE IF NOT EXISTS `m_share_account_charge_paid_by` ( -- Dumping structure for table mifostenant-reference.m_share_account_dividend_details DROP TABLE IF EXISTS `m_share_account_dividend_details`; CREATE TABLE IF NOT EXISTS `m_share_account_dividend_details` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `dividend_pay_out_id` bigint(20) NOT NULL, - `account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `dividend_pay_out_id` BIGINT NOT NULL, + `account_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, - `status` smallint(3) NOT NULL, - `savings_transaction_id` bigint(20) DEFAULT NULL, + `status` SMALLINT NOT NULL, + `savings_transaction_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_share_account_dividend_details_dividend_pay_out_id` (`dividend_pay_out_id`), KEY `FK_m_share_account_dividend_details_account_id` (`account_id`), CONSTRAINT `FK_m_share_account_dividend_details_account_id` FOREIGN KEY (`account_id`) REFERENCES `m_share_account` (`id`), CONSTRAINT `FK_m_share_account_dividend_details_dividend_pay_out_id` FOREIGN KEY (`dividend_pay_out_id`) REFERENCES `m_share_product_dividend_pay_out` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_account_dividend_details: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account_dividend_details` DISABLE KEYS */; @@ -5127,21 +5127,21 @@ CREATE TABLE IF NOT EXISTS `m_share_account_dividend_details` ( -- Dumping structure for table mifostenant-reference.m_share_account_transactions DROP TABLE IF EXISTS `m_share_account_transactions`; CREATE TABLE IF NOT EXISTS `m_share_account_transactions` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `account_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `account_id` BIGINT NOT NULL, `transaction_date` date DEFAULT NULL, - `total_shares` bigint(20) DEFAULT NULL, + `total_shares` BIGINT DEFAULT NULL, `unit_price` decimal(10,2) DEFAULT NULL, `amount` decimal(20,2) DEFAULT NULL, `charge_amount` decimal(20,2) DEFAULT NULL, `amount_paid` decimal(20,2) DEFAULT NULL, - `status_enum` smallint(5) NOT NULL DEFAULT '300', - `type_enum` smallint(5) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `status_enum` SMALLINT NOT NULL DEFAULT '300', + `type_enum` SMALLINT DEFAULT NULL, + `is_active` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `m_share_account_purchased_shares_ibfk_1` (`account_id`), CONSTRAINT `m_share_account_purchased_shares_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `m_share_account` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_account_transactions: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_account_transactions` DISABLE KEYS */; @@ -5151,7 +5151,7 @@ CREATE TABLE IF NOT EXISTS `m_share_account_transactions` ( -- Dumping structure for table mifostenant-reference.m_share_product DROP TABLE IF EXISTS `m_share_product`; CREATE TABLE IF NOT EXISTS `m_share_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, `short_name` varchar(4) NOT NULL, `external_id` varchar(100) DEFAULT NULL, @@ -5159,33 +5159,33 @@ CREATE TABLE IF NOT EXISTS `m_share_product` ( `start_date` datetime DEFAULT NULL, `end_date` datetime DEFAULT NULL, `currency_code` varchar(3) NOT NULL, - `currency_digits` smallint(5) NOT NULL, - `currency_multiplesof` smallint(5) DEFAULT NULL, - `total_shares` bigint(20) NOT NULL, - `issued_shares` bigint(20) DEFAULT NULL, - `totalsubscribed_shares` bigint(20) DEFAULT NULL, + `currency_digits` SMALLINT NOT NULL, + `currency_multiplesof` SMALLINT DEFAULT NULL, + `total_shares` BIGINT NOT NULL, + `issued_shares` BIGINT DEFAULT NULL, + `totalsubscribed_shares` BIGINT DEFAULT NULL, `unit_price` decimal(10,2) NOT NULL, `capital_amount` decimal(20,2) NOT NULL, - `minimum_client_shares` bigint(20) DEFAULT NULL, - `nominal_client_shares` bigint(20) NOT NULL, - `maximum_client_shares` bigint(20) DEFAULT NULL, + `minimum_client_shares` BIGINT DEFAULT NULL, + `nominal_client_shares` BIGINT NOT NULL, + `maximum_client_shares` BIGINT DEFAULT NULL, `minimum_active_period_frequency` decimal(19,6) DEFAULT NULL, - `minimum_active_period_frequency_enum` smallint(5) DEFAULT NULL, + `minimum_active_period_frequency_enum` SMALLINT DEFAULT NULL, `lockin_period_frequency` decimal(19,6) DEFAULT NULL, - `lockin_period_frequency_enum` smallint(5) DEFAULT NULL, - `allow_dividends_inactive_clients` smallint(1) DEFAULT '0', - `createdby_id` bigint(20) DEFAULT NULL, + `lockin_period_frequency_enum` SMALLINT DEFAULT NULL, + `allow_dividends_inactive_clients` SMALLINT DEFAULT '0', + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `accounting_type` smallint(2) NOT NULL, + `accounting_type` SMALLINT NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `m_share_product_ibfk_1` (`createdby_id`), KEY `m_share_product_ibfk_2` (`lastmodifiedby_id`), CONSTRAINT `m_share_product_ibfk_1` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_share_product_ibfk_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_product: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_product` DISABLE KEYS */; @@ -5195,13 +5195,13 @@ CREATE TABLE IF NOT EXISTS `m_share_product` ( -- Dumping structure for table mifostenant-reference.m_share_product_charge DROP TABLE IF EXISTS `m_share_product_charge`; CREATE TABLE IF NOT EXISTS `m_share_product_charge` ( - `product_id` bigint(20) NOT NULL, - `charge_id` bigint(20) NOT NULL, + `product_id` BIGINT NOT NULL, + `charge_id` BIGINT NOT NULL, PRIMARY KEY (`product_id`,`charge_id`), KEY `m_share_product_charge_ibfk_1` (`charge_id`), CONSTRAINT `m_share_product_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`), CONSTRAINT `m_share_product_charge_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_product_charge: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_product_charge` DISABLE KEYS */; @@ -5211,15 +5211,15 @@ CREATE TABLE IF NOT EXISTS `m_share_product_charge` ( -- Dumping structure for table mifostenant-reference.m_share_product_dividend_pay_out DROP TABLE IF EXISTS `m_share_product_dividend_pay_out`; CREATE TABLE IF NOT EXISTS `m_share_product_dividend_pay_out` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, `amount` decimal(19,6) NOT NULL, `dividend_period_start_date` date NOT NULL, `dividend_period_end_date` date NOT NULL, - `status` smallint(3) NOT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `status` SMALLINT NOT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_share_product_dividend_pay_out_product_id` (`product_id`), @@ -5228,7 +5228,7 @@ CREATE TABLE IF NOT EXISTS `m_share_product_dividend_pay_out` ( CONSTRAINT `FK_m_share_product_dividend_pay_out_createdby_id` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_share_product_dividend_pay_out_lastmodifiedby_id` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_m_share_product_dividend_pay_out_product_id` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_product_dividend_pay_out: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_product_dividend_pay_out` DISABLE KEYS */; @@ -5238,14 +5238,14 @@ CREATE TABLE IF NOT EXISTS `m_share_product_dividend_pay_out` ( -- Dumping structure for table mifostenant-reference.m_share_product_market_price DROP TABLE IF EXISTS `m_share_product_market_price`; CREATE TABLE IF NOT EXISTS `m_share_product_market_price` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `product_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `product_id` BIGINT NOT NULL, `from_date` date DEFAULT NULL, `share_value` decimal(10,2) NOT NULL, PRIMARY KEY (`id`), KEY `m_share_product_market_price_ibfk_1` (`product_id`), CONSTRAINT `m_share_product_market_price_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `m_share_product` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_share_product_market_price: ~0 rows (approximately) /*!40000 ALTER TABLE `m_share_product_market_price` DISABLE KEYS */; @@ -5255,19 +5255,19 @@ CREATE TABLE IF NOT EXISTS `m_share_product_market_price` ( -- Dumping structure for table mifostenant-reference.m_staff DROP TABLE IF EXISTS `m_staff`; CREATE TABLE IF NOT EXISTS `m_staff` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0', - `office_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `is_loan_officer` tinyint NOT NULL DEFAULT '0', + `office_id` BIGINT DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `display_name` varchar(102) NOT NULL, `mobile_no` varchar(50) DEFAULT NULL, `external_id` varchar(100) DEFAULT NULL, - `organisational_role_enum` smallint(6) DEFAULT NULL, - `organisational_role_parent_staff_id` bigint(20) DEFAULT NULL, - `is_active` tinyint(1) NOT NULL DEFAULT '1', + `organisational_role_enum` SMALLINT DEFAULT NULL, + `organisational_role_parent_staff_id` BIGINT DEFAULT NULL, + `is_active` tinyint NOT NULL DEFAULT '1', `joining_date` date DEFAULT NULL, - `image_id` bigint(20) DEFAULT NULL, + `image_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `display_name` (`display_name`), UNIQUE KEY `external_id_UNIQUE` (`external_id`), @@ -5276,7 +5276,7 @@ CREATE TABLE IF NOT EXISTS `m_staff` ( KEY `FK_m_staff_m_image` (`image_id`), CONSTRAINT `FK_m_staff_m_image` FOREIGN KEY (`image_id`) REFERENCES `m_image` (`id`), CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_staff: ~3 rows (approximately) /*!40000 ALTER TABLE `m_staff` DISABLE KEYS */; @@ -5290,21 +5290,21 @@ INSERT INTO `m_staff` (`id`, `is_loan_officer`, `office_id`, `firstname`, `lastn -- Dumping structure for table mifostenant-reference.m_staff_assignment_history DROP TABLE IF EXISTS `m_staff_assignment_history`; CREATE TABLE IF NOT EXISTS `m_staff_assignment_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `centre_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `centre_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT NOT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) DEFAULT NULL, + `createdby_id` BIGINT DEFAULT NULL, `created_date` datetime DEFAULT NULL, `lastmodified_date` datetime DEFAULT NULL, - `lastmodifiedby_id` bigint(20) DEFAULT NULL, + `lastmodifiedby_id` BIGINT DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_m_staff_assignment_history_centre_id_m_group` (`centre_id`), KEY `FK_m_staff_assignment_history_m_staff` (`staff_id`), CONSTRAINT `FK_m_staff_assignment_history_centre_id_m_group` FOREIGN KEY (`centre_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FK_m_staff_assignment_history_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_staff_assignment_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_staff_assignment_history` DISABLE KEYS */; @@ -5314,7 +5314,7 @@ CREATE TABLE IF NOT EXISTS `m_staff_assignment_history` ( -- Dumping structure for table mifostenant-reference.m_surveys DROP TABLE IF EXISTS `m_surveys`; CREATE TABLE IF NOT EXISTS `m_surveys` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `a_key` varchar(32) NOT NULL, `a_name` varchar(255) NOT NULL, `description` varchar(4000) DEFAULT NULL, @@ -5322,7 +5322,7 @@ CREATE TABLE IF NOT EXISTS `m_surveys` ( `valid_from` datetime DEFAULT NULL, `valid_to` datetime DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_surveys: ~0 rows (approximately) /*!40000 ALTER TABLE `m_surveys` DISABLE KEYS */; @@ -5332,16 +5332,16 @@ CREATE TABLE IF NOT EXISTS `m_surveys` ( -- Dumping structure for table mifostenant-reference.m_survey_components DROP TABLE IF EXISTS `m_survey_components`; CREATE TABLE IF NOT EXISTS `m_survey_components` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `survey_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `a_key` varchar(32) NOT NULL, `a_text` varchar(255) NOT NULL, `description` varchar(4000) DEFAULT NULL, - `sequence_no` int(4) NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), KEY `survey_id` (`survey_id`), CONSTRAINT `m_survey_components_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_survey_components: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_components` DISABLE KEYS */; @@ -5351,17 +5351,17 @@ CREATE TABLE IF NOT EXISTS `m_survey_components` ( -- Dumping structure for table mifostenant-reference.m_survey_lookup_tables DROP TABLE IF EXISTS `m_survey_lookup_tables`; CREATE TABLE IF NOT EXISTS `m_survey_lookup_tables` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `survey_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `a_key` varchar(255) NOT NULL, - `description` int(4) DEFAULT NULL, - `value_from` int(4) NOT NULL, - `value_to` int(4) NOT NULL, + `description` INT DEFAULT NULL, + `value_from` INT NOT NULL, + `value_to` INT NOT NULL, `score` decimal(5,2) NOT NULL, PRIMARY KEY (`id`), KEY `survey_id` (`survey_id`), CONSTRAINT `m_survey_lookup_tables_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_survey_lookup_tables: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_lookup_tables` DISABLE KEYS */; @@ -5371,17 +5371,17 @@ CREATE TABLE IF NOT EXISTS `m_survey_lookup_tables` ( -- Dumping structure for table mifostenant-reference.m_survey_questions DROP TABLE IF EXISTS `m_survey_questions`; CREATE TABLE IF NOT EXISTS `m_survey_questions` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `survey_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, `component_key` varchar(32) DEFAULT NULL, `a_key` varchar(32) NOT NULL, `a_text` varchar(255) NOT NULL, `description` varchar(4000) DEFAULT NULL, - `sequence_no` int(4) NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), KEY `survey_id` (`survey_id`), CONSTRAINT `m_survey_questions_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `m_surveys` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_survey_questions: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_questions` DISABLE KEYS */; @@ -5391,15 +5391,15 @@ CREATE TABLE IF NOT EXISTS `m_survey_questions` ( -- Dumping structure for table mifostenant-reference.m_survey_responses DROP TABLE IF EXISTS `m_survey_responses`; CREATE TABLE IF NOT EXISTS `m_survey_responses` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `question_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `question_id` BIGINT NOT NULL, `a_text` varchar(255) NOT NULL, - `a_value` int(4) NOT NULL, - `sequence_no` int(4) NOT NULL, + `a_value` INT NOT NULL, + `sequence_no` INT NOT NULL, PRIMARY KEY (`id`), KEY `question_id` (`question_id`), CONSTRAINT `m_survey_responses_ibfk_1` FOREIGN KEY (`question_id`) REFERENCES `m_survey_questions` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_survey_responses: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_responses` DISABLE KEYS */; @@ -5409,14 +5409,14 @@ CREATE TABLE IF NOT EXISTS `m_survey_responses` ( -- Dumping structure for table mifostenant-reference.m_survey_scorecards DROP TABLE IF EXISTS `m_survey_scorecards`; CREATE TABLE IF NOT EXISTS `m_survey_scorecards` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `survey_id` bigint(20) NOT NULL, - `question_id` bigint(20) NOT NULL, - `response_id` bigint(20) NOT NULL, - `user_id` bigint(20) NOT NULL, - `client_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `survey_id` BIGINT NOT NULL, + `question_id` BIGINT NOT NULL, + `response_id` BIGINT NOT NULL, + `user_id` BIGINT NOT NULL, + `client_id` BIGINT NOT NULL, `created_on` datetime DEFAULT NULL, - `a_value` int(4) NOT NULL, + `a_value` INT NOT NULL, PRIMARY KEY (`id`), KEY `survey_id` (`survey_id`), KEY `question_id` (`question_id`), @@ -5428,7 +5428,7 @@ CREATE TABLE IF NOT EXISTS `m_survey_scorecards` ( CONSTRAINT `m_survey_scorecards_ibfk_3` FOREIGN KEY (`response_id`) REFERENCES `m_survey_responses` (`id`), CONSTRAINT `m_survey_scorecards_ibfk_4` FOREIGN KEY (`user_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `m_survey_scorecards_ibfk_5` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_survey_scorecards: ~0 rows (approximately) /*!40000 ALTER TABLE `m_survey_scorecards` DISABLE KEYS */; @@ -5438,17 +5438,17 @@ CREATE TABLE IF NOT EXISTS `m_survey_scorecards` ( -- Dumping structure for table mifostenant-reference.m_tax_component DROP TABLE IF EXISTS `m_tax_component`; CREATE TABLE IF NOT EXISTS `m_tax_component` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `percentage` decimal(19,6) NOT NULL, - `debit_account_type_enum` smallint(2) DEFAULT NULL, - `debit_account_id` bigint(20) DEFAULT NULL, - `credit_account_type_enum` smallint(2) DEFAULT NULL, - `credit_account_id` bigint(20) DEFAULT NULL, + `debit_account_type_enum` SMALLINT DEFAULT NULL, + `debit_account_id` BIGINT DEFAULT NULL, + `credit_account_type_enum` SMALLINT DEFAULT NULL, + `credit_account_id` BIGINT DEFAULT NULL, `start_date` date NOT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_tax_component_debit_gl_account` (`debit_account_id`), @@ -5459,7 +5459,7 @@ CREATE TABLE IF NOT EXISTS `m_tax_component` ( CONSTRAINT `FK_tax_component_credit_gl_account` FOREIGN KEY (`credit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_tax_component_debit_gl_account` FOREIGN KEY (`debit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_tax_component_lastmodifiedby` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_tax_component: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tax_component` DISABLE KEYS */; @@ -5469,14 +5469,14 @@ CREATE TABLE IF NOT EXISTS `m_tax_component` ( -- Dumping structure for table mifostenant-reference.m_tax_component_history DROP TABLE IF EXISTS `m_tax_component_history`; CREATE TABLE IF NOT EXISTS `m_tax_component_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `tax_component_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `tax_component_id` BIGINT NOT NULL, `percentage` decimal(19,6) NOT NULL, `start_date` date NOT NULL, `end_date` date NOT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_tax_component_history_tax_component_id` (`tax_component_id`), @@ -5485,7 +5485,7 @@ CREATE TABLE IF NOT EXISTS `m_tax_component_history` ( CONSTRAINT `FK_tax_component_history_createdby` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_tax_component_history_lastmodifiedby` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_tax_component_history_tax_component_id` FOREIGN KEY (`tax_component_id`) REFERENCES `m_tax_component` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_tax_component_history: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tax_component_history` DISABLE KEYS */; @@ -5495,18 +5495,18 @@ CREATE TABLE IF NOT EXISTS `m_tax_component_history` ( -- Dumping structure for table mifostenant-reference.m_tax_group DROP TABLE IF EXISTS `m_tax_group`; CREATE TABLE IF NOT EXISTS `m_tax_group` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_tax_group_createdby` (`createdby_id`), KEY `FK_tax_group_lastmodifiedby` (`lastmodifiedby_id`), CONSTRAINT `FK_tax_group_createdby` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_tax_group_lastmodifiedby` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_tax_group: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tax_group` DISABLE KEYS */; @@ -5516,14 +5516,14 @@ CREATE TABLE IF NOT EXISTS `m_tax_group` ( -- Dumping structure for table mifostenant-reference.m_tax_group_mappings DROP TABLE IF EXISTS `m_tax_group_mappings`; CREATE TABLE IF NOT EXISTS `m_tax_group_mappings` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `tax_group_id` bigint(20) NOT NULL, - `tax_component_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `tax_group_id` BIGINT NOT NULL, + `tax_component_id` BIGINT NOT NULL, `start_date` date NOT NULL, `end_date` date DEFAULT NULL, - `createdby_id` bigint(20) NOT NULL, + `createdby_id` BIGINT NOT NULL, `created_date` datetime NOT NULL, - `lastmodifiedby_id` bigint(20) NOT NULL, + `lastmodifiedby_id` BIGINT NOT NULL, `lastmodified_date` datetime NOT NULL, PRIMARY KEY (`id`), KEY `FK_tax_group_mappings_tax_group` (`tax_group_id`), @@ -5534,7 +5534,7 @@ CREATE TABLE IF NOT EXISTS `m_tax_group_mappings` ( CONSTRAINT `FK_tax_group_mappings_lastmodifiedby` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`), CONSTRAINT `FK_tax_group_mappings_tax_component` FOREIGN KEY (`tax_component_id`) REFERENCES `m_tax_component` (`id`), CONSTRAINT `FK_tax_group_mappings_tax_group` FOREIGN KEY (`tax_group_id`) REFERENCES `m_tax_group` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_tax_group_mappings: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tax_group_mappings` DISABLE KEYS */; @@ -5544,15 +5544,15 @@ CREATE TABLE IF NOT EXISTS `m_tax_group_mappings` ( -- Dumping structure for table mifostenant-reference.m_tellers DROP TABLE IF EXISTS `m_tellers`; CREATE TABLE IF NOT EXISTS `m_tellers` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `office_id` bigint(20) NOT NULL, - `debit_account_id` bigint(20) DEFAULT NULL, - `credit_account_id` bigint(20) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `office_id` BIGINT NOT NULL, + `debit_account_id` BIGINT DEFAULT NULL, + `credit_account_id` BIGINT DEFAULT NULL, `name` varchar(50) NOT NULL, `description` varchar(100) DEFAULT NULL, `valid_from` date DEFAULT NULL, `valid_to` date DEFAULT NULL, - `state` smallint(5) DEFAULT NULL, + `state` SMALLINT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `m_tellers_name_unq` (`name`), KEY `IK_m_tellers_m_office` (`office_id`), @@ -5561,7 +5561,7 @@ CREATE TABLE IF NOT EXISTS `m_tellers` ( CONSTRAINT `FK_m_tellers_gl_account_credit_account_id` FOREIGN KEY (`credit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_m_tellers_gl_account_debit_account_id` FOREIGN KEY (`debit_account_id`) REFERENCES `acc_gl_account` (`id`), CONSTRAINT `FK_m_tellers_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_tellers: ~0 rows (approximately) /*!40000 ALTER TABLE `m_tellers` DISABLE KEYS */; @@ -5571,14 +5571,14 @@ CREATE TABLE IF NOT EXISTS `m_tellers` ( -- Dumping structure for table mifostenant-reference.m_template DROP TABLE IF EXISTS `m_template`; CREATE TABLE IF NOT EXISTS `m_template` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `text` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `entity` int(11) DEFAULT NULL, - `type` int(11) DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `name` varchar(255) CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci NOT NULL, + `text` longtext CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci NOT NULL, + `entity` INT DEFAULT NULL, + `type` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_template: ~0 rows (approximately) /*!40000 ALTER TABLE `m_template` DISABLE KEYS */; @@ -5588,12 +5588,12 @@ CREATE TABLE IF NOT EXISTS `m_template` ( -- Dumping structure for table mifostenant-reference.m_templatemappers DROP TABLE IF EXISTS `m_templatemappers`; CREATE TABLE IF NOT EXISTS `m_templatemappers` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `mapperkey` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `mapperorder` int(11) DEFAULT NULL, - `mappervalue` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `mapperkey` varchar(255) CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `mapperorder` INT DEFAULT NULL, + `mappervalue` varchar(255) CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_templatemappers: ~0 rows (approximately) /*!40000 ALTER TABLE `m_templatemappers` DISABLE KEYS */; @@ -5603,12 +5603,12 @@ CREATE TABLE IF NOT EXISTS `m_templatemappers` ( -- Dumping structure for table mifostenant-reference.m_template_m_templatemappers DROP TABLE IF EXISTS `m_template_m_templatemappers`; CREATE TABLE IF NOT EXISTS `m_template_m_templatemappers` ( - `m_template_id` bigint(20) NOT NULL, - `mappers_id` bigint(20) NOT NULL, + `m_template_id` BIGINT NOT NULL, + `mappers_id` BIGINT NOT NULL, UNIQUE KEY `mappers_id` (`mappers_id`), KEY `mappers_id_2` (`mappers_id`), KEY `m_template_id` (`m_template_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_template_m_templatemappers: ~0 rows (approximately) /*!40000 ALTER TABLE `m_template_m_templatemappers` DISABLE KEYS */; @@ -5618,13 +5618,13 @@ CREATE TABLE IF NOT EXISTS `m_template_m_templatemappers` ( -- Dumping structure for table mifostenant-reference.m_working_days DROP TABLE IF EXISTS `m_working_days`; CREATE TABLE IF NOT EXISTS `m_working_days` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `recurrence` varchar(100) DEFAULT NULL, - `repayment_rescheduling_enum` smallint(5) DEFAULT NULL, - `extend_term_daily_repayments` tinyint(1) DEFAULT '0', - `extend_term_holiday_repayment` tinyint(1) NOT NULL DEFAULT '0', + `repayment_rescheduling_enum` SMALLINT DEFAULT NULL, + `extend_term_daily_repayments` tinyint DEFAULT '0', + `extend_term_holiday_repayment` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.m_working_days: ~1 rows (approximately) /*!40000 ALTER TABLE `m_working_days` DISABLE KEYS */; @@ -5643,7 +5643,7 @@ CREATE TABLE IF NOT EXISTS `oauth_access_token` ( `client_id` varchar(256) DEFAULT NULL, `authentication` blob, `refresh_token` varchar(256) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.oauth_access_token: ~0 rows (approximately) /*!40000 ALTER TABLE `oauth_access_token` DISABLE KEYS */; @@ -5660,12 +5660,12 @@ CREATE TABLE IF NOT EXISTS `oauth_client_details` ( `authorized_grant_types` varchar(256) DEFAULT NULL, `web_server_redirect_uri` varchar(256) DEFAULT NULL, `authorities` varchar(256) DEFAULT NULL, - `access_token_validity` int(11) DEFAULT NULL, - `refresh_token_validity` int(11) DEFAULT NULL, + `access_token_validity` INT DEFAULT NULL, + `refresh_token_validity` INT DEFAULT NULL, `additional_information` varchar(4096) DEFAULT NULL, `autoapprove` bit(1) DEFAULT NULL, PRIMARY KEY (`client_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.oauth_client_details: ~0 rows (approximately) /*!40000 ALTER TABLE `oauth_client_details` DISABLE KEYS */; @@ -5680,7 +5680,7 @@ CREATE TABLE IF NOT EXISTS `oauth_refresh_token` ( `token_id` varchar(256) DEFAULT NULL, `token` blob, `authentication` blob -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.oauth_refresh_token: ~0 rows (approximately) /*!40000 ALTER TABLE `oauth_refresh_token` DISABLE KEYS */; @@ -5690,11 +5690,11 @@ CREATE TABLE IF NOT EXISTS `oauth_refresh_token` ( -- Dumping structure for table mifostenant-reference.ppi_likelihoods DROP TABLE IF EXISTS `ppi_likelihoods`; CREATE TABLE IF NOT EXISTS `ppi_likelihoods` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) NOT NULL, `name` varchar(250) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.ppi_likelihoods: ~0 rows (approximately) /*!40000 ALTER TABLE `ppi_likelihoods` DISABLE KEYS */; @@ -5704,12 +5704,12 @@ CREATE TABLE IF NOT EXISTS `ppi_likelihoods` ( -- Dumping structure for table mifostenant-reference.ppi_likelihoods_ppi DROP TABLE IF EXISTS `ppi_likelihoods_ppi`; CREATE TABLE IF NOT EXISTS `ppi_likelihoods_ppi` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `likelihood_id` bigint(20) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `likelihood_id` BIGINT NOT NULL, `ppi_name` varchar(250) NOT NULL, - `enabled` int(11) NOT NULL DEFAULT '100', + `enabled` INT NOT NULL DEFAULT '100', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.ppi_likelihoods_ppi: ~0 rows (approximately) /*!40000 ALTER TABLE `ppi_likelihoods_ppi` DISABLE KEYS */; @@ -5719,11 +5719,11 @@ CREATE TABLE IF NOT EXISTS `ppi_likelihoods_ppi` ( -- Dumping structure for table mifostenant-reference.ppi_scores DROP TABLE IF EXISTS `ppi_scores`; CREATE TABLE IF NOT EXISTS `ppi_scores` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `score_from` int(11) NOT NULL, - `score_to` int(11) NOT NULL, + `id` BIGINT NOT NULL AUTO_INCREMENT, + `score_from` INT NOT NULL, + `score_to` INT NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.ppi_scores: ~20 rows (approximately) /*!40000 ALTER TABLE `ppi_scores` DISABLE KEYS */; @@ -5754,13 +5754,13 @@ INSERT INTO `ppi_scores` (`id`, `score_from`, `score_to`) VALUES -- Dumping structure for table mifostenant-reference.ref_loan_transaction_processing_strategy DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`; CREATE TABLE IF NOT EXISTS `ref_loan_transaction_processing_strategy` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `code` varchar(100) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, - `sort_order` int(4) DEFAULT NULL, + `sort_order` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ltp_strategy_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.ref_loan_transaction_processing_strategy: ~7 rows (approximately) /*!40000 ALTER TABLE `ref_loan_transaction_processing_strategy` DISABLE KEYS */; @@ -5778,9 +5778,9 @@ INSERT INTO `ref_loan_transaction_processing_strategy` (`id`, `code`, `name`, `s -- Dumping structure for table mifostenant-reference.rpt_sequence DROP TABLE IF EXISTS `rpt_sequence`; CREATE TABLE IF NOT EXISTS `rpt_sequence` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.rpt_sequence: ~0 rows (approximately) /*!40000 ALTER TABLE `rpt_sequence` DISABLE KEYS */; @@ -5791,14 +5791,14 @@ CREATE TABLE IF NOT EXISTS `rpt_sequence` ( DROP TABLE IF EXISTS `r_enum_value`; CREATE TABLE IF NOT EXISTS `r_enum_value` ( `enum_name` varchar(100) NOT NULL, - `enum_id` int(11) NOT NULL, + `enum_id` INT NOT NULL, `enum_message_property` varchar(100) NOT NULL, `enum_value` varchar(100) NOT NULL, - `enum_type` tinyint(1) NOT NULL, + `enum_type` tinyint NOT NULL, PRIMARY KEY (`enum_name`,`enum_id`), UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`), UNIQUE KEY `enum_value` (`enum_name`,`enum_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.r_enum_value: ~159 rows (approximately) /*!40000 ALTER TABLE `r_enum_value` DISABLE KEYS */; @@ -5968,12 +5968,12 @@ INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `en -- Dumping structure for table mifostenant-reference.scheduler_detail DROP TABLE IF EXISTS `scheduler_detail`; CREATE TABLE IF NOT EXISTS `scheduler_detail` ( - `id` smallint(2) NOT NULL AUTO_INCREMENT, - `is_suspended` tinyint(1) NOT NULL DEFAULT '0', - `execute_misfired_jobs` tinyint(1) NOT NULL DEFAULT '1', - `reset_scheduler_on_bootup` tinyint(1) NOT NULL DEFAULT '1', + `id` SMALLINT NOT NULL AUTO_INCREMENT, + `is_suspended` tinyint NOT NULL DEFAULT '0', + `execute_misfired_jobs` tinyint NOT NULL DEFAULT '1', + `reset_scheduler_on_bootup` tinyint NOT NULL DEFAULT '1', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.scheduler_detail: ~0 rows (approximately) /*!40000 ALTER TABLE `scheduler_detail` DISABLE KEYS */; @@ -5985,17 +5985,17 @@ INSERT INTO `scheduler_detail` (`id`, `is_suspended`, `execute_misfired_jobs`, ` -- Dumping structure for table mifostenant-reference.schema_version DROP TABLE IF EXISTS `schema_version`; CREATE TABLE IF NOT EXISTS `schema_version` ( - `version_rank` int(11) NOT NULL, - `installed_rank` int(11) NOT NULL, + `version_rank` INT NOT NULL, + `installed_rank` INT NOT NULL, `version` varchar(50) NOT NULL, `description` varchar(200) NOT NULL, `type` varchar(20) NOT NULL, `script` varchar(1000) NOT NULL, - `checksum` int(11) DEFAULT NULL, + `checksum` INT DEFAULT NULL, `installed_by` varchar(100) NOT NULL, `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `execution_time` int(11) NOT NULL, - `success` tinyint(1) NOT NULL, + `execution_time` INT NOT NULL, + `success` tinyint NOT NULL, PRIMARY KEY (`version`), KEY `schema_version_vr_idx` (`version_rank`), KEY `schema_version_ir_idx` (`installed_rank`), @@ -6348,30 +6348,30 @@ INSERT INTO `schema_version` (`version_rank`, `installed_rank`, `version`, `desc -- Dumping structure for table mifostenant-reference.sms_campaign DROP TABLE IF EXISTS `sms_campaign`; CREATE TABLE IF NOT EXISTS `sms_campaign` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, + `id` BIGINT NOT NULL AUTO_INCREMENT, `campaign_name` varchar(100) NOT NULL, - `campaign_type` int(11) NOT NULL, - `campaign_trigger_type` int(11) NOT NULL, - `report_id` int(11) NOT NULL, - `provider_id` bigint(20) NOT NULL, + `campaign_type` INT NOT NULL, + `campaign_trigger_type` INT NOT NULL, + `report_id` INT NOT NULL, + `provider_id` BIGINT NOT NULL, `param_value` text, - `status_enum` int(11) NOT NULL, + `status_enum` INT NOT NULL, `message` text NOT NULL, `submittedon_date` date DEFAULT NULL, - `submittedon_userid` bigint(20) DEFAULT NULL, + `submittedon_userid` BIGINT DEFAULT NULL, `approvedon_date` date DEFAULT NULL, - `approvedon_userid` bigint(20) DEFAULT NULL, + `approvedon_userid` BIGINT DEFAULT NULL, `closedon_date` date DEFAULT NULL, - `closedon_userid` bigint(20) DEFAULT NULL, + `closedon_userid` BIGINT DEFAULT NULL, `recurrence` varchar(100) DEFAULT NULL, `next_trigger_date` datetime DEFAULT NULL, `last_trigger_date` datetime DEFAULT NULL, `recurrence_start_date` datetime DEFAULT NULL, - `is_visible` tinyint(1) DEFAULT '1', + `is_visible` tinyint DEFAULT '1', PRIMARY KEY (`id`), KEY `report_id` (`report_id`), CONSTRAINT `sms_campaign_ibfk_1` FOREIGN KEY (`report_id`) REFERENCES `stretchy_report` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.sms_campaign: ~0 rows (approximately) /*!40000 ALTER TABLE `sms_campaign` DISABLE KEYS */; @@ -6381,14 +6381,14 @@ CREATE TABLE IF NOT EXISTS `sms_campaign` ( -- Dumping structure for table mifostenant-reference.sms_messages_outbound DROP TABLE IF EXISTS `sms_messages_outbound`; CREATE TABLE IF NOT EXISTS `sms_messages_outbound` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `group_id` bigint(20) DEFAULT NULL, - `client_id` bigint(20) DEFAULT NULL, - `staff_id` bigint(20) DEFAULT NULL, - `status_enum` int(5) NOT NULL DEFAULT '100', + `id` BIGINT NOT NULL AUTO_INCREMENT, + `group_id` BIGINT DEFAULT NULL, + `client_id` BIGINT DEFAULT NULL, + `staff_id` BIGINT DEFAULT NULL, + `status_enum` INT NOT NULL DEFAULT '100', `mobile_no` varchar(50) NOT NULL, `message` varchar(1000) NOT NULL, - `campaign_id` bigint(20) NOT NULL, + `campaign_id` BIGINT NOT NULL, `external_id` varchar(100) DEFAULT NULL, `submittedon_date` date DEFAULT NULL, `delivered_on_date` datetime DEFAULT NULL, @@ -6401,7 +6401,7 @@ CREATE TABLE IF NOT EXISTS `sms_messages_outbound` ( CONSTRAINT `FKCLIENT00000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`), CONSTRAINT `FKGROUP000000001` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`), CONSTRAINT `FKSTAFF000000001` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.sms_messages_outbound: ~0 rows (approximately) /*!40000 ALTER TABLE `sms_messages_outbound` DISABLE KEYS */; @@ -6411,7 +6411,7 @@ CREATE TABLE IF NOT EXISTS `sms_messages_outbound` ( -- Dumping structure for table mifostenant-reference.stretchy_parameter DROP TABLE IF EXISTS `stretchy_parameter`; CREATE TABLE IF NOT EXISTS `stretchy_parameter` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `parameter_name` varchar(45) NOT NULL, `parameter_variable` varchar(45) DEFAULT NULL, `parameter_label` varchar(45) NOT NULL, @@ -6422,12 +6422,12 @@ CREATE TABLE IF NOT EXISTS `stretchy_parameter` ( `selectOne` varchar(1) DEFAULT NULL, `selectAll` varchar(1) DEFAULT NULL, `parameter_sql` text, - `parent_id` int(11) DEFAULT NULL, + `parent_id` INT DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`parameter_name`), KEY `fk_stretchy_parameter_001_idx` (`parent_id`), CONSTRAINT `fk_stretchy_parameter_001` FOREIGN KEY (`parent_id`) REFERENCES `stretchy_parameter` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1023 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1023 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.stretchy_parameter: ~32 rows (approximately) /*!40000 ALTER TABLE `stretchy_parameter` DISABLE KEYS */; @@ -6439,7 +6439,7 @@ INSERT INTO `stretchy_parameter` (`id`, `parameter_name`, `parameter_variable`, (6, 'loanOfficerIdSelectAll', 'loanOfficerId', 'Loan Officer', 'select', 'number', '0', NULL, NULL, 'Y', '(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2', 5), (10, 'currencyIdSelectAll', 'currencyId', 'Currency', 'select', 'number', '0', NULL, NULL, 'Y', 'select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`', NULL), (20, 'fundIdSelectAll', 'fundId', 'Fund', 'select', 'number', '0', NULL, NULL, 'Y', '(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2', NULL), - (25, 'loanProductIdSelectAll', 'loanProductId', 'Product', 'select', 'number', '0', NULL, NULL, 'Y', 'select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere (p.currency_code = \'${currencyId}\' or \'-1\'= \'${currencyId}\')\r\norder by 2', 10), + (25, 'loanProductIdSelectAll', 'loanProductId', 'Product', 'select', 'number', '0', NULL, NULL, 'Y', 'select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere (p.currency_code = \'$\{currencyId}\' or \'-1\'= \'$\{currencyId}\')\r\norder by 2', 10), (26, 'loanPurposeIdSelectAll', 'loanPurposeId', 'Loan Purpose', 'select', 'number', '0', NULL, NULL, 'Y', 'select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on v.code_id = c.id\r\nwhere c.code_name = "loanPurpose"\r\norder by v.order_position) x', NULL), (100, 'parTypeSelect', 'parType', 'parType', 'select', 'number', '0', NULL, NULL, NULL, 'select * from\r\n(select 1 as id, "Principal Only" as `name` union all\r\nselect 2, "Principal + Interest" union all\r\nselect 3, "Principal + Interest + Fees" union all\r\nselect 4, "Principal + Interest + Fees + Penalties") x\r\norder by x.`id`', NULL), (1001, 'FullReportList', NULL, 'n/a', 'n/a', 'n/a', 'n/a', 'Y', NULL, NULL, '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', NULL), @@ -6470,49 +6470,49 @@ INSERT INTO `stretchy_parameter` (`id`, `parameter_name`, `parameter_variable`, -- Dumping structure for table mifostenant-reference.stretchy_report DROP TABLE IF EXISTS `stretchy_report`; CREATE TABLE IF NOT EXISTS `stretchy_report` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` INT NOT NULL AUTO_INCREMENT, `report_name` varchar(100) NOT NULL, `report_type` varchar(20) NOT NULL, `report_subtype` varchar(20) DEFAULT NULL, `report_category` varchar(45) DEFAULT NULL, `report_sql` text, `description` text, - `core_report` tinyint(1) DEFAULT '0', - `use_report` tinyint(1) DEFAULT '0', + `core_report` tinyint DEFAULT '0', + `use_report` tinyint DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `report_name_UNIQUE` (`report_name`) -) ENGINE=InnoDB AUTO_INCREMENT=188 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=188 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.stretchy_report: ~115 rows (approximately) /*!40000 ALTER TABLE `stretchy_report` DISABLE KEYS */; INSERT INTO `stretchy_report` (`id`, `report_name`, `report_type`, `report_subtype`, `report_category`, `report_sql`, `description`, `core_report`, `use_report`) VALUES (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", \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', 'Individual Client Report\r\n\r\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.\r\n\r\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), - (2, 'Client Loans Listing', 'Table', NULL, 'Client', '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', 'Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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), - (5, 'Loans Awaiting Disbursal', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nc.account_no as "Client Account No", c.display_name as "Name", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as "Term Frequency",\n\n\r\ntf.enum_message_property as "Term Frequency Period",\r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate",\r\ndate(l.approvedon_date) "Approved",\r\ndatediff(l.expected_disbursedon_date, curdate()) as "Days to Disbursal",\r\ndate(l.expected_disbursedon_date) "Expected Disbursal",\r\npurp.code_value as "Loan Purpose",\r\n lo.display_name as "Loan Officer"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = "term_period_frequency_enum" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no', 'Individual Client Report', 1, 1), - (6, 'Loans Awaiting Disbursal Summary', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\npl.`name` as "Product", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`, ounder.name\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`', 'Individual Client Report', 1, 1), - (7, 'Loans Awaiting Disbursal Summary by Month', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\npl.`name` as "Product", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as "Year", \r\nmonthname(l.expected_disbursedon_date) as "Month",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date), ounder.name, l.expected_disbursedon_date\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)', 'Individual Client Report', 1, 1), - (8, 'Loans Pending Approval', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nc.account_no as "Client Account No.", c.display_name as "Client Name", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as "Product", \r\nl.account_no as "Loan Account No.", \r\nl.principal_amount as "Loan Amount", \r\nl.term_frequency as "Term Frequency",\n\n\r\ntf.enum_message_property as "Term Frequency Period",\r\nl.annual_nominal_interest_rate as " Annual \n\nNominal Interest Rate", \r\ndatediff(curdate(), l.submittedon_date) "Days Pending Approval", \r\npurp.code_value as "Loan Purpose",\r\nlo.display_name as "Loan Officer"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = "term_period_frequency_enum" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no', 'Individual Client Report', 1, 1), - (11, 'Active Loans - Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', NULL, 1, 1), - (12, 'Active Loans - Details', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", \r\nc.display_name as "Client", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\ndate(l.expected_maturedon_date) as "Expected Matured On",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\npenalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), - (13, 'Obligation Met Loans Details', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as "Client Account No.", c.display_name as "Client",\r\nl.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.total_repayment_derived as "Total Repaid", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", \r\ndate(l.closedon_date) as "Closed",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nlo.display_name as "Loan Officer"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), - (14, 'Obligation Met Loans Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as "No. of Clients",\r\ncount(distinct(l.id)) as "No. of Loans",\r\nsum(l.principal_amount) as "Total Loan Amount", \r\nsum(l.principal_repaid_derived) as "Total Principal Repaid",\r\nsum(l.interest_repaid_derived) as "Total Interest Repaid",\r\nsum(l.fee_charges_repaid_derived) as "Total Fees Repaid",\r\nsum(l.penalty_charges_repaid_derived) as "Total Penalties Repaid",\r\nsum(l.interest_waived_derived) as "Total Interest Waived",\r\nsum(l.fee_charges_waived_derived) as "Total Fees Waived",\r\nsum(l.penalty_charges_waived_derived) as "Total Penalties Waived"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code, ounder.name\r\norder by ounder.hierarchy, l.currency_code', 'Individual Client \n\nReport', 1, 1), - (15, 'Portfolio at Risk', 'Table', NULL, 'Loan', 'select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as "Principal Outstanding",\r\nsum(laa.principal_overdue_derived) as "Principal Overdue",\r\n\r\nsum(l.interest_outstanding_derived) as "Interest Outstanding",\r\nsum(laa.interest_overdue_derived) as "Interest Overdue",\r\n\r\nsum(l.fee_charges_outstanding_derived) as "Fees Outstanding",\r\nsum(laa.fee_charges_overdue_derived) as "Fees Overdue",\r\n\r\nsum(penalty_charges_outstanding_derived) as "Penalties Outstanding",\r\nsum(laa.penalty_charges_overdue_derived) as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x', 'Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)', 1, 1), - (16, 'Portfolio at Risk by Branch', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as "branch", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as "Principal Outstanding",\r\nsum(laa.principal_overdue_derived) as "Principal Overdue",\r\n\r\nsum(l.interest_outstanding_derived) as "Interest Outstanding",\r\nsum(laa.interest_overdue_derived) as "Interest Overdue",\r\n\r\nsum(l.fee_charges_outstanding_derived) as "Fees Outstanding",\r\nsum(laa.fee_charges_overdue_derived) as "Fees Overdue",\r\n\r\nsum(penalty_charges_outstanding_derived) as "Penalties Outstanding",\r\nsum(laa.penalty_charges_overdue_derived) as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', 'Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)', 1, 1), - (20, 'Funds Disbursed Between Dates Summary', 'Table', NULL, 'Fund', 'select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)', NULL, 1, 1), - (21, 'Funds Disbursed Between Dates Summary by Office', 'Table', NULL, 'Fund', 'select \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)', NULL, 1, 1), + (2, 'Client Loans Listing', 'Table', NULL, 'Client', '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', 'Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans. \r\n\r\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), + (5, 'Loans Awaiting Disbursal', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nc.account_no as "Client Account No", c.display_name as "Name", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nl.principal_amount as Principal, \r\nl.term_frequency as "Term Frequency",\n\n\r\ntf.enum_message_property as "Term Frequency Period",\r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate",\r\ndate(l.approvedon_date) "Approved",\r\ndatediff(l.expected_disbursedon_date, curdate()) as "Days to Disbursal",\r\ndate(l.expected_disbursedon_date) "Expected Disbursal",\r\npurp.code_value as "Loan Purpose",\r\n lo.display_name as "Loan Officer"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = "term_period_frequency_enum" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no', 'Individual Client Report', 1, 1), + (6, 'Loans Awaiting Disbursal Summary', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\npl.`name` as "Product", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`, ounder.name\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`', 'Individual Client Report', 1, 1), + (7, 'Loans Awaiting Disbursal Summary by Month', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\npl.`name` as "Product", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, \r\nyear(l.expected_disbursedon_date) as "Year", \r\nmonthname(l.expected_disbursedon_date) as "Month",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date), ounder.name, l.expected_disbursedon_date\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)', 'Individual Client Report', 1, 1), + (8, 'Loans Pending Approval', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nc.account_no as "Client Account No.", c.display_name as "Client Name", \r\nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as "Product", \r\nl.account_no as "Loan Account No.", \r\nl.principal_amount as "Loan Amount", \r\nl.term_frequency as "Term Frequency",\n\n\r\ntf.enum_message_property as "Term Frequency Period",\r\nl.annual_nominal_interest_rate as " Annual \n\nNominal Interest Rate", \r\ndatediff(curdate(), l.submittedon_date) "Days Pending Approval", \r\npurp.code_value as "Loan Purpose",\r\nlo.display_name as "Loan Officer"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = "term_period_frequency_enum" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date, l.account_no', 'Individual Client Report', 1, 1), + (11, 'Active Loans - Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', NULL, 1, 1), + (12, 'Active Loans - Details', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", \r\nc.display_name as "Client", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\ndate(l.expected_maturedon_date) as "Expected Matured On",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\npenalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), + (13, 'Obligation Met Loans Details', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as "Client Account No.", c.display_name as "Client",\r\nl.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.total_repayment_derived as "Total Repaid", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", \r\ndate(l.closedon_date) as "Closed",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nlo.display_name as "Loan Officer"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), + (14, 'Obligation Met Loans Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as "No. of Clients",\r\ncount(distinct(l.id)) as "No. of Loans",\r\nsum(l.principal_amount) as "Total Loan Amount", \r\nsum(l.principal_repaid_derived) as "Total Principal Repaid",\r\nsum(l.interest_repaid_derived) as "Total Interest Repaid",\r\nsum(l.fee_charges_repaid_derived) as "Total Fees Repaid",\r\nsum(l.penalty_charges_repaid_derived) as "Total Penalties Repaid",\r\nsum(l.interest_waived_derived) as "Total Interest Waived",\r\nsum(l.fee_charges_waived_derived) as "Total Fees Waived",\r\nsum(l.penalty_charges_waived_derived) as "Total Penalties Waived"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n when ${obligDateType} = 1 then\r\n l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n when ${obligDateType} = 2 then\r\n l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n else 1 = 1\r\n end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code, ounder.name\r\norder by ounder.hierarchy, l.currency_code', 'Individual Client \n\nReport', 1, 1), + (15, 'Portfolio at Risk', 'Table', NULL, 'Loan', 'select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from \r\n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nsum(l.principal_outstanding_derived) as "Principal Outstanding",\r\nsum(laa.principal_overdue_derived) as "Principal Overdue",\r\n\r\nsum(l.interest_outstanding_derived) as "Interest Outstanding",\r\nsum(laa.interest_overdue_derived) as "Interest Overdue",\r\n\r\nsum(l.fee_charges_outstanding_derived) as "Fees Outstanding",\r\nsum(laa.fee_charges_overdue_derived) as "Fees Overdue",\r\n\r\nsum(penalty_charges_outstanding_derived) as "Penalties Outstanding",\r\nsum(laa.penalty_charges_overdue_derived) as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x', 'Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)', 1, 1), + (16, 'Portfolio at Risk by Branch', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as "branch", ifnull(cur.display_symbol, l.currency_code) as Currency, \r\n\r\nsum(l.principal_outstanding_derived) as "Principal Outstanding",\r\nsum(laa.principal_overdue_derived) as "Principal Overdue",\r\n\r\nsum(l.interest_outstanding_derived) as "Interest Outstanding",\r\nsum(laa.interest_overdue_derived) as "Interest Overdue",\r\n\r\nsum(l.fee_charges_outstanding_derived) as "Fees Outstanding",\r\nsum(laa.fee_charges_overdue_derived) as "Fees Overdue",\r\n\r\nsum(penalty_charges_outstanding_derived) as "Penalties Outstanding",\r\nsum(laa.penalty_charges_overdue_derived) as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', 'Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)', 1, 1), + (20, 'Funds Disbursed Between Dates Summary', 'Table', NULL, 'Fund', 'select ifnull(f.`name`, \'-\') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)', NULL, 1, 1), + (21, 'Funds Disbursed Between Dates Summary by Office', 'Table', NULL, 'Fund', 'select \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\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\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'$\{currencyId}\' or \'-1\' = \'$\{currencyId}\')\r\ngroup by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`, ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)', NULL, 1, 1), (48, 'Balance Sheet', 'Pentaho', NULL, 'Accounting', NULL, 'Balance Sheet', 1, 1), (49, 'Income Statement', 'Pentaho', NULL, 'Accounting', NULL, 'Profit and Loss Statement', 1, 1), (50, 'Trial Balance', 'Pentaho', NULL, 'Accounting', NULL, 'Trial Balance Report', 1, 1), - (51, 'Written-Off Loans', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as "Client Account No.",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as "Loan Amount",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = "${currencyId}" or "-1" = "${currencyId}") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no', 'Individual Lending Report. Written Off Loans', 1, 1), + (51, 'Written-Off Loans', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as "Client Account No.",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as "Loan Amount",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no', 'Individual Lending Report. Written Off Loans', 1, 1), (52, 'Aging Detail', 'Table', NULL, 'Loan', '\r\nSELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nmc.account_no as "Client Account No.",\r\n mc.display_name AS "Client Name",\r\n ml.account_no AS "Account Number",\r\n ml.principal_amount AS "Loan Amount",\r\n ml.principal_disbursed_derived AS "Original Principal",\r\n ml.interest_charged_derived AS "Original Interest",\r\n ml.principal_repaid_derived AS "Principal Paid",\r\n ml.interest_repaid_derived AS "Interest Paid",\r\n laa.principal_overdue_derived AS "Principal Overdue",\r\n laa.interest_overdue_derived AS "Interest Overdue",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as "Days in Arrears",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS "Weeks In Arrears Band",\r\n\r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n \'> 360\'))))) AS "Days in Arrears Band"\r\n\r\n FROM m_office mo \r\n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id AND rev.enum_name = \'loan_status_id\'\r\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n left join m_currency cur on cur.code = ml.currency_code\r\n WHERE ml.loan_status_id=300\r\n AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no\r\n', 'Loan arrears aging (Weeks)', 1, 1), - (53, 'Aging Summary (Arrears in Weeks)', 'Table', NULL, 'Loan', 'SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = "${currencyId}" or "-1" = "${currencyId}")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid', 'Loan amount in arrears by branch', 1, 1), - (54, 'Rescheduled Loans', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as "Client Account No.",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as "Loan Amount",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\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), - (55, 'Active Loans Passed Final Maturity', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", \r\nc.display_name as "Client", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\ndate(l.expected_maturedon_date) as "Expected Matured On",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\nlaa.penalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), - (56, 'Active Loans Passed Final Maturity Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', NULL, 1, 1), - (57, 'Active Loans in last installment', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as "Office/Branch",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\nlaa.penalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", c.account_no as "Client Account No",\r\nc.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, l.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as "Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", date(l.expected_maturedon_date) as "Expected Matured On"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`', 'Individual Client \n\nReport', 1, 1), - (58, 'Active Loans in last installment Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", c.id as clientId, c.account_no as "Client Account No",\r\nc.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, l.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as "Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", date(l.expected_maturedon_date) as "Expected Matured On"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId, lastInstallment.Currency) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency', 'Individual Client \n\nReport', 1, 1), - (59, 'Active Loans by Disbursal Period', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as "Client Account No", c.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Principal Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\n\r\nl.total_expected_repayment_derived as "Total Loan (P+I+F+Pen)",\r\nl.total_repayment_derived as "Total Repaid (P+I+F+Pen)",\r\nlo.display_name as "Loan Officer"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), - (61, 'Aging Summary (Arrears in Months)', 'Table', NULL, 'Loan', 'SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = "${currencyId}" or "-1" = "${currencyId}")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = "${currencyId}" or "-1" = "${currencyId}")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid', 'Loan amount in arrears by branch', 1, 1), + (53, 'Aging Summary (Arrears in Weeks)', 'Table', NULL, 'Loan', 'SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Weeks In Arrears (Up To)\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'1\',2 UNION\r\n SELECT \'2\',3 UNION\r\n SELECT \'3\',4 UNION\r\n SELECT \'4\',5 UNION\r\n SELECT \'5\',6 UNION\r\n SELECT \'6\',7 UNION\r\n SELECT \'7\',8 UNION\r\n SELECT \'8\',9 UNION\r\n SELECT \'9\',10 UNION\r\n SELECT \'10\',11 UNION\r\n SELECT \'11\',12 UNION\r\n SELECT \'12\',13 UNION\r\n SELECT \'12+\',14) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n \'12+\'))))))))))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid', 'Loan amount in arrears by branch', 1, 1), + (54, 'Rescheduled Loans', 'Table', NULL, 'Loan', 'SELECT \r\nconcat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency, \r\nc.account_no as "Client Account No.",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as "Loan Amount",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\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), + (55, 'Active Loans Passed Final Maturity', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", \r\nc.display_name as "Client", l.account_no as "Loan Account No.", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\ndate(l.expected_maturedon_date) as "Expected Matured On",\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\nlaa.penalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), + (56, 'Active Loans Passed Final Maturity Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency', NULL, 1, 1), + (57, 'Active Loans in last installment', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as "Office/Branch",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as "Principal Repaid",\r\nl.principal_outstanding_derived as "Principal Outstanding",\r\nlaa.principal_overdue_derived as "Principal Overdue",\r\n\r\nl.interest_repaid_derived as "Interest Repaid",\r\nl.interest_outstanding_derived as "Interest Outstanding",\r\nlaa.interest_overdue_derived as "Interest Overdue",\r\n\r\nl.fee_charges_repaid_derived as "Fees Repaid",\r\nl.fee_charges_outstanding_derived as "Fees Outstanding",\r\nlaa.fee_charges_overdue_derived as "Fees Overdue",\r\n\r\nl.penalty_charges_repaid_derived as "Penalties Repaid",\r\nl.penalty_charges_outstanding_derived as "Penalties Outstanding",\r\nlaa.penalty_charges_overdue_derived as "Penalties Overdue"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", c.account_no as "Client Account No",\r\nc.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, l.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as "Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", date(l.expected_maturedon_date) as "Expected Matured On"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`', 'Individual Client \n\nReport', 1, 1), + (58, 'Active Loans in last installment Summary', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as "Office/Branch", x.currency as Currency,\r\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",\r\nx.principal as "Total Loans Disbursed", x.principal_repaid as "Principal Repaid", x.principal_outstanding as "Principal Outstanding", x.principal_overdue as "Principal Overdue",\r\nx.interest as "Total Interest", x.interest_repaid as "Interest Repaid", x.interest_outstanding as "Interest Outstanding", x.interest_overdue as "Interest Overdue",\r\nx.fees as "Total Fees", x.fees_repaid as "Fees Repaid", x.fees_outstanding as "Fees Outstanding", x.fees_overdue as "Fees Overdue",\r\nx.penalties as "Total Penalties", x.penalties_repaid as "Penalties Repaid", x.penalties_outstanding as "Penalties Outstanding", x.penalties_overdue as "Penalties Overdue",\r\n\r\n (case\r\n when ${parType} = 1 then\r\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n when ${parType} = 2 then\r\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n when ${parType} = 3 then\r\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)\r\n when ${parType} = 4 then\r\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)\r\n else "invalid PAR Type"\r\n end) as "Portfolio at Risk %"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as active_loan_count,\r\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as "Loan Officer", c.id as clientId, c.account_no as "Client Account No",\r\nc.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, l.principal_amount as "Loan Amount", \r\nl.annual_nominal_interest_rate as "Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed", date(l.expected_maturedon_date) as "Expected Matured On"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId, lastInstallment.Currency) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency', 'Individual Client \n\nReport', 1, 1), + (59, 'Active Loans by Disbursal Period', 'Table', NULL, 'Loan', 'select concat(repeat("..", \r\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as "Office/Branch",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as "Client Account No", c.display_name as "Client", l.account_no as "Loan Account No", pl.`name` as "Product", \r\nf.`name` as Fund, \r\nl.principal_amount as "Loan Principal Amount", \r\nl.annual_nominal_interest_rate as " Annual Nominal Interest Rate", \r\ndate(l.disbursedon_date) as "Disbursed Date", \r\n\r\nl.total_expected_repayment_derived as "Total Loan (P+I+F+Pen)",\r\nl.total_repayment_derived as "Total Repaid (P+I+F+Pen)",\r\nlo.display_name as "Loan Officer"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\nand (l.product_id = "${loanProductId}" or "-1" = "${loanProductId}")\r\nand (ifnull(l.loan_officer_id, -10) = "${loanOfficerId}" or "-1" = "${loanOfficerId}")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no', 'Individual Client \n\nReport', 1, 1), + (61, 'Aging Summary (Arrears in Months)', 'Table', NULL, 'Loan', 'SELECT \r\n IFNULL(periods.currencyName, periods.currency) as currency, \r\n periods.period_no \'Days In Arrears\', \r\n IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n IFNULL(ars.principal,0.0) \'Original Principal\', \r\n IFNULL(ars.interest,0.0) \'Original Interest\', \r\n IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n /* full table of aging periods/currencies used combo to ensure each line represented */\r\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n (SELECT \'On Schedule\' period_no,1 pid UNION\r\n SELECT \'0 - 30\',2 UNION\r\n SELECT \'30 - 60\',3 UNION\r\n SELECT \'60 - 90\',4 UNION\r\n SELECT \'90 - 180\',5 UNION\r\n SELECT \'180 - 360\',6 UNION\r\n SELECT \'> 360\',7 ) pers,\r\n (SELECT distinctrow moc.code, moc.name\r\n FROM m_office mo2\r\n INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n WHERE ml2.loan_status_id=300 /* active */\r\n AND mo2.id=${officeId}\r\nAND (ml2.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n z.currency, z.arrPeriod, \r\n COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n /*derived table just used to get arrPeriod value (was much slower to\r\n duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n (SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n \'> 360\')))))) AS arrPeriod\r\n\r\n FROM /* get the individual loan details */\r\n (SELECT ml.id AS loanId, ml.currency_code as currency,\r\n ml.principal_disbursed_derived as principal, \r\n ml.interest_charged_derived as interest, \r\n ml.principal_repaid_derived as prinPaid, \r\n ml.interest_repaid_derived intPaid,\r\n\r\n laa.principal_overdue_derived as prinOverdue,\r\n laa.interest_overdue_derived as intOverdue,\r\n\r\n IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n \r\n FROM m_office mo\r\n INNER JOIN m_office ounder ON ounder.hierarchy \r\n LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n WHERE ml.loan_status_id=300 /* active */\r\n AND mo.id=${officeId}\r\n AND (ml.currency_code = "$\{currencyId}" or "-1" = "$\{currencyId}")\r\n GROUP BY ml.id) x\r\n ) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid', 'Loan amount in arrears by branch', 1, 1), (91, 'Loan Account Schedule', 'Pentaho', NULL, 'Loan', NULL, NULL, 1, 0), (92, 'Branch Expected Cash Flow', 'Pentaho', NULL, 'Loan', NULL, NULL, 1, 1), (93, 'Expected Payments By Date - Basic', 'Table', NULL, 'Loan', 'SELECT \r\n ounder.name \'Office\', \r\n IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n mc.account_no \'Client Account Number\',\r\n mc.display_name \'Name\',\r\n mp.name \'Product\',\r\n ml.account_no \'Loan Account Number\',\r\n mr.duedate \'Due Date\',\r\n mr.installment \'Installment\',\r\n cu.display_symbol \'Currency\',\r\n mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) \'Total Due\', \r\n mlaa.total_overdue_derived \'Total Overdue\'\r\n \r\n FROM m_office mo\r\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n \r\n AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n \r\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = "${loanOfficerId}" OR "-1" = "${loanOfficerId}")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no', 'Test', 1, 1), @@ -6607,9 +6607,9 @@ INSERT INTO `stretchy_report` (`id`, `report_name`, `report_type`, `report_subty -- Dumping structure for table mifostenant-reference.stretchy_report_parameter DROP TABLE IF EXISTS `stretchy_report_parameter`; CREATE TABLE IF NOT EXISTS `stretchy_report_parameter` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `report_id` int(11) NOT NULL, - `parameter_id` int(11) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `report_id` INT NOT NULL, + `parameter_id` INT NOT NULL, `report_parameter_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `report_parameter_unique` (`report_id`,`parameter_id`), @@ -6617,7 +6617,7 @@ CREATE TABLE IF NOT EXISTS `stretchy_report_parameter` ( KEY `fk_report_parameter_002_idx` (`parameter_id`), CONSTRAINT `fk_report_parameter_001` FOREIGN KEY (`report_id`) REFERENCES `stretchy_report` (`id`) ON DELETE CASCADE, CONSTRAINT `fk_report_parameter_002` FOREIGN KEY (`parameter_id`) REFERENCES `stretchy_parameter` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=522 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=522 DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.stretchy_report_parameter: ~415 rows (approximately) /*!40000 ALTER TABLE `stretchy_report_parameter` DISABLE KEYS */; @@ -7045,9 +7045,9 @@ DROP TABLE IF EXISTS `x_registered_table`; CREATE TABLE IF NOT EXISTS `x_registered_table` ( `registered_table_name` varchar(50) NOT NULL, `application_table_name` varchar(50) NOT NULL, - `category` int(11) NOT NULL DEFAULT '100', + `category` INT NOT NULL DEFAULT '100', PRIMARY KEY (`registered_table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.x_registered_table: ~0 rows (approximately) /*!40000 ALTER TABLE `x_registered_table` DISABLE KEYS */; @@ -7058,11 +7058,11 @@ CREATE TABLE IF NOT EXISTS `x_registered_table` ( DROP TABLE IF EXISTS `x_table_column_code_mappings`; CREATE TABLE IF NOT EXISTS `x_table_column_code_mappings` ( `column_alias_name` varchar(50) NOT NULL, - `code_id` int(10) NOT NULL, + `code_id` INT NOT NULL, PRIMARY KEY (`column_alias_name`), KEY `FK_x_code_id` (`code_id`), CONSTRAINT `FK_x_code_id` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- Dumping data for table mifostenant-reference.x_table_column_code_mappings: ~0 rows (approximately) /*!40000 ALTER TABLE `x_table_column_code_mappings` DISABLE KEYS */; diff --git a/fineract-provider/src/main/resources/sql/migrations/sample_data/tn03_interop_sample_data.sql b/fineract-provider/src/main/resources/sql/migrations/sample_data/tn03_interop_sample_data.sql index 6941fabda..e69e2250b 100644 --- a/fineract-provider/src/main/resources/sql/migrations/sample_data/tn03_interop_sample_data.sql +++ b/fineract-provider/src/main/resources/sql/migrations/sample_data/tn03_interop_sample_data.sql @@ -45,14 +45,14 @@ VALUES (@saving_account_no, NULL, 300, NULL, ADDDATE(curdate(), -100), NULL, 1, -- saving product, account SET @last_saving_prod_id = -1; -SELECT COALESCE(max(id), 1) into @last_saving_prod_id from m_savings_product; +SELECT COALESCE(max(id), 1) from m_savings_product into @last_saving_prod_id; SET @saving_prod_name = concat('Saving Product', @last_saving_prod_id); SET @saving_prod_id = -1; -SELECT id INTO @saving_prod_id FROM m_savings_product WHERE name = @saving_prod_name; +SELECT id FROM m_savings_product WHERE name = @saving_prod_name INTO @saving_prod_id; SET @client_id = -1; -SELECT id INTO @client_id FROM m_client WHERE fullname = @client_name; +SELECT id FROM m_client WHERE fullname = @client_name INTO @client_id; INSERT INTO `m_savings_account` (`account_no`, `external_id`, `client_id`, `group_id`, `product_id`, `field_officer_id`, `status_enum`, @@ -69,7 +69,7 @@ VALUES (@saving_account_no, @saving_account_ext_id, @client_id, NULL, @saving_pr -- interop_identifier SET @saving_acc_id = -1; -SELECT id INTO @saving_acc_id FROM m_savings_account WHERE account_no = @saving_account_no; +SELECT id FROM m_savings_account WHERE account_no = @saving_account_no INTO @saving_acc_id; INSERT INTO interop_identifier (id, account_id, type, a_value, sub_value_or_type, created_by, created_on, modified_by, modified_on) VALUES (NULL, @saving_acc_id, 'IBAN', @IBAN, NULL, 'operator', CURDATE(), 'operator', diff --git a/fineract-provider/src/main/resources/sql/migrations/sample_data/tn04_interop_sample_data.sql b/fineract-provider/src/main/resources/sql/migrations/sample_data/tn04_interop_sample_data.sql index 1c17bcbba..6afa60a3a 100644 --- a/fineract-provider/src/main/resources/sql/migrations/sample_data/tn04_interop_sample_data.sql +++ b/fineract-provider/src/main/resources/sql/migrations/sample_data/tn04_interop_sample_data.sql @@ -45,14 +45,14 @@ VALUES (@saving_account_no, NULL, 300, NULL, ADDDATE(curdate(), -100), NULL, 1, -- saving product, account SET @last_saving_prod_id = -1; -SELECT COALESCE(max(id), 1) into @last_saving_prod_id from m_savings_product; +SELECT COALESCE(max(id), 1) from m_savings_product into @last_saving_prod_id; SET @saving_prod_name = concat('Saving Product', @last_saving_prod_id); SET @saving_prod_id = -1; -SELECT id INTO @saving_prod_id FROM m_savings_product WHERE name = @saving_prod_name; +SELECT id FROM m_savings_product WHERE name = @saving_prod_name INTO @saving_prod_id; SET @client_id = -1; -SELECT id INTO @client_id FROM m_client WHERE fullname = @client_name; +SELECT id FROM m_client WHERE fullname = @client_name INTO @client_id; INSERT INTO `m_savings_account` (`account_no`, `external_id`, `client_id`, `group_id`, `product_id`, `field_officer_id`, `status_enum`, @@ -69,7 +69,7 @@ VALUES (@saving_account_no, @saving_account_ext_id, @client_id, NULL, @saving_pr -- interop_identifier SET @saving_acc_id = -1; -SELECT id INTO @saving_acc_id FROM m_savings_account WHERE account_no = @saving_account_no; +SELECT id FROM m_savings_account WHERE account_no = @saving_account_no INTO @saving_acc_id; INSERT INTO interop_identifier (id, account_id, type, a_value, sub_value_or_type, created_by, created_on, modified_by, modified_on) VALUES (NULL, @saving_acc_id, 'IBAN', @IBAN, NULL, 'operator', CURDATE(), 'operator',