305 lines
7.9 KiB
TypeScript
305 lines
7.9 KiB
TypeScript
import { OptionData } from 'app/shared/models/option-data.model';
|
|
|
|
/** Recurring Deposits Account Buttons Configuration */
|
|
export class LoansAccountButtonConfiguration {
|
|
optionArray: {
|
|
name: string;
|
|
taskPermissionName?: string;
|
|
}[];
|
|
|
|
optionPaymentArray: {
|
|
name: string;
|
|
taskPermissionName?: string;
|
|
}[];
|
|
|
|
buttonsArray: {
|
|
name: string;
|
|
icon: string;
|
|
taskPermissionName?: string;
|
|
}[];
|
|
|
|
constructor(status: string, substatus: OptionData) {
|
|
this.setOptions(status, substatus);
|
|
this.setButtons(status);
|
|
}
|
|
|
|
get singleButtons() {
|
|
return this.buttonsArray;
|
|
}
|
|
|
|
get options() {
|
|
return this.optionArray;
|
|
}
|
|
|
|
get optionsPayment() {
|
|
return this.optionPaymentArray;
|
|
}
|
|
|
|
setButtons(status: string) {
|
|
switch (status) {
|
|
case 'Active':
|
|
this.buttonsArray = [
|
|
{
|
|
name: 'Add Loan Charge',
|
|
icon: 'plus',
|
|
taskPermissionName: 'CREATE_LOANCHARGE'
|
|
},
|
|
{
|
|
name: 'Foreclosure',
|
|
icon: 'heart-broken',
|
|
taskPermissionName: 'FORECLOSURE_LOAN'
|
|
},
|
|
{
|
|
name: 'Make Repayment',
|
|
icon: 'coins',
|
|
taskPermissionName: 'REPAYMENT_LOAN'
|
|
},
|
|
{
|
|
name: 'Undo Disbursal',
|
|
icon: 'undo',
|
|
taskPermissionName: 'DISBURSALUNDO_LOAN'
|
|
}
|
|
];
|
|
break;
|
|
case 'Submitted and pending approval':
|
|
this.buttonsArray = [
|
|
{
|
|
name: 'Add Loan Charge',
|
|
icon: 'plus',
|
|
taskPermissionName: 'CREATE_LOANCHARGE'
|
|
},
|
|
{
|
|
name: 'Approve',
|
|
icon: 'check',
|
|
taskPermissionName: 'APPROVE_LOAN'
|
|
},
|
|
{
|
|
name: 'Modify Application',
|
|
icon: 'edit',
|
|
taskPermissionName: 'UPDATE_LOAN'
|
|
},
|
|
{
|
|
name: 'Reject',
|
|
icon: 'times',
|
|
taskPermissionName: 'REJECT_LOAN'
|
|
}
|
|
];
|
|
break;
|
|
case 'Approved':
|
|
this.buttonsArray = [
|
|
{
|
|
name: 'Disburse',
|
|
icon: 'hand-holding-usd',
|
|
taskPermissionName: 'DISBURSE_LOAN'
|
|
},
|
|
{
|
|
name: 'Disburse to Savings',
|
|
icon: 'piggy-bank',
|
|
taskPermissionName: 'DISBURSETOSAVINGS_LOAN'
|
|
},
|
|
{
|
|
name: 'Undo Approval',
|
|
icon: 'undo',
|
|
taskPermissionName: 'APPROVALUNDO_LOAN'
|
|
}
|
|
];
|
|
break;
|
|
case 'Overpaid':
|
|
this.buttonsArray = [
|
|
{
|
|
name: 'Transfer Funds',
|
|
icon: 'exchange',
|
|
taskPermissionName: 'CREATE_ACCOUNTTRANSFER'
|
|
},
|
|
{
|
|
name: 'Credit Balance Refund',
|
|
icon: 'coins',
|
|
taskPermissionName: 'CREATE_CREDIT_BALANCE_REFUND'
|
|
}
|
|
];
|
|
break;
|
|
case 'Closed (written off)':
|
|
this.buttonsArray = [
|
|
{
|
|
name: 'Recovery Payment',
|
|
icon: 'briefcase',
|
|
taskPermissionName: 'RECOVERYPAYMENT_LOAN'
|
|
},
|
|
{
|
|
name: 'Undo Write-off',
|
|
icon: 'undo',
|
|
taskPermissionName: 'UNDOWRITEOFF_LOAN'
|
|
}
|
|
];
|
|
break;
|
|
case 'Closed (obligations met)':
|
|
this.buttonsArray = [
|
|
{
|
|
name: 'Goodwill Credit',
|
|
icon: 'coins',
|
|
taskPermissionName: 'CREATE_GOODWILL_TRANSACTION'
|
|
},
|
|
{
|
|
name: 'Interest Payment Waiver',
|
|
icon: 'coins',
|
|
taskPermissionName: 'CREATE_INTERESTPAYMENTWAIVER_TRANSACTION'
|
|
},
|
|
{
|
|
name: 'Payout Refund',
|
|
icon: 'coins',
|
|
taskPermissionName: 'CREATE_PAYOUT_REFUND'
|
|
},
|
|
{
|
|
name: 'Merchant Issued Refund',
|
|
icon: 'coins',
|
|
taskPermissionName: 'CREATE_MERCHANT_ISSUED_REFUND'
|
|
}
|
|
];
|
|
break;
|
|
default:
|
|
this.buttonsArray = [];
|
|
}
|
|
}
|
|
|
|
setOptions(status: string, substatus: OptionData) {
|
|
switch (status) {
|
|
case 'Active':
|
|
this.optionArray = [
|
|
{
|
|
name: 'Waive Interest',
|
|
taskPermissionName: 'WAIVEINTERESTPORTION_LOAN'
|
|
},
|
|
{
|
|
name: 'Reschedule',
|
|
taskPermissionName: 'CREATE_RESCHEDULELOAN'
|
|
},
|
|
{
|
|
name: 'Write Off',
|
|
taskPermissionName: 'WRITEOFF_LOAN'
|
|
},
|
|
{
|
|
name: 'Close (as Rescheduled)',
|
|
taskPermissionName: 'CLOSEASRESCHEDULED_LOAN'
|
|
},
|
|
{
|
|
name: 'Close',
|
|
taskPermissionName: 'CLOSE_LOAN'
|
|
},
|
|
{
|
|
name: 'Loan Screen Report',
|
|
taskPermissionName: 'READ_LOAN'
|
|
},
|
|
{
|
|
name: 'View Guarantors',
|
|
taskPermissionName: 'READ_GUARANTOR'
|
|
},
|
|
{
|
|
name: 'Create Guarantor',
|
|
taskPermissionName: 'CREATE_GUARANTOR'
|
|
},
|
|
{
|
|
name: 'Recover From Guarantor',
|
|
taskPermissionName: 'RECOVERGUARANTEES_LOAN'
|
|
},
|
|
{
|
|
name: 'Sell Loan',
|
|
taskPermissionName: 'SALE_LOAN'
|
|
}
|
|
];
|
|
if (!this.isContractTermination(substatus)) {
|
|
this.optionArray.push({
|
|
name: 'Contract Termination',
|
|
taskPermissionName: 'CONTRACT_TERMINATION_LOAN'
|
|
});
|
|
}
|
|
this.optionPaymentArray = [
|
|
{
|
|
name: 'Goodwill Credit',
|
|
taskPermissionName: 'CREATE_GOODWILL_TRANSACTION'
|
|
},
|
|
{
|
|
name: 'Interest Payment Waiver',
|
|
taskPermissionName: 'CREATE_INTERESTPAYMENTWAIVER_TRANSACTION'
|
|
},
|
|
{
|
|
name: 'Payout Refund',
|
|
taskPermissionName: 'CREATE_PAYOUT_REFUND'
|
|
},
|
|
{
|
|
name: 'Merchant Issued Refund',
|
|
taskPermissionName: 'CREATE_MERCHANT_ISSUED_REFUND'
|
|
}
|
|
];
|
|
break;
|
|
case 'Submitted and pending approval':
|
|
this.optionArray = [
|
|
{
|
|
name: 'Withdrawn by Client',
|
|
taskPermissionName: 'WITHDRAW_LOAN'
|
|
},
|
|
{
|
|
name: 'Delete',
|
|
taskPermissionName: 'DELETE_LOAN'
|
|
},
|
|
{
|
|
name: 'Add Collateral',
|
|
taskPermissionName: 'CREATE_COLLATERAL'
|
|
},
|
|
{
|
|
name: 'View Guarantors',
|
|
taskPermissionName: 'READ_GUARANTOR'
|
|
},
|
|
{
|
|
name: 'Create Guarantor',
|
|
taskPermissionName: 'CREATE_GUARANTOR'
|
|
},
|
|
{
|
|
name: 'Loan Screen Reports',
|
|
taskPermissionName: 'READ_LOAN'
|
|
}
|
|
];
|
|
this.optionPaymentArray = [];
|
|
break;
|
|
case 'Approved':
|
|
this.optionArray = [
|
|
{
|
|
name: 'Add Loan Charge',
|
|
taskPermissionName: 'CREATE_LOANCHARGE'
|
|
},
|
|
{
|
|
name: 'View Guarantors',
|
|
taskPermissionName: 'READ_GUARANTOR'
|
|
},
|
|
{
|
|
name: 'Create Guarantor',
|
|
taskPermissionName: 'CREATE_GUARANTOR'
|
|
},
|
|
{
|
|
name: 'Loan Screen Report',
|
|
taskPermissionName: 'READ_LOAN'
|
|
}
|
|
];
|
|
this.optionPaymentArray = [];
|
|
break;
|
|
default:
|
|
this.optionArray = [];
|
|
this.optionPaymentArray = [];
|
|
}
|
|
}
|
|
|
|
addOption(option: { name: string; icon?: string; taskPermissionName?: string }) {
|
|
this.optionArray.push(option);
|
|
}
|
|
|
|
addButton(option: { name: string; icon: string; taskPermissionName?: string }) {
|
|
this.buttonsArray.push(option);
|
|
}
|
|
|
|
private isContractTermination(substatus: OptionData): boolean {
|
|
if (substatus == null) {
|
|
return false;
|
|
}
|
|
return substatus.code === 'loanSubStatus.loanSubStatusType.contractTermination';
|
|
}
|
|
}
|