Feat #FINCN-202 - Adds support for editing loan details.
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/api/DataManagerLoans.java b/app/src/main/java/org/apache/fineract/data/datamanager/api/DataManagerLoans.java
index e641d7f..4efdfa2 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/api/DataManagerLoans.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/api/DataManagerLoans.java
@@ -17,7 +17,7 @@
/**
* @author Rajan Maurya
- * On 07/07/17.
+ * On 07/07/17.
*/
@Singleton
public class DataManagerLoans extends FineractBaseDataManager {
@@ -27,7 +27,7 @@
@Inject
public DataManagerLoans(BaseApiManager baseApiManager, PreferencesHelper preferencesHelper,
- DataManagerAuth dataManagerAuth) {
+ DataManagerAuth dataManagerAuth) {
super(dataManagerAuth, preferencesHelper);
this.baseApiManager = baseApiManager;
this.preferencesHelper = preferencesHelper;
@@ -78,4 +78,13 @@
return authenticatedCompletableApi(baseApiManager.getLoanApi()
.createLoan(productIdentifier, loanAccount));
}
+
+ public Completable updateLoan(
+ String productIdentifier,
+ LoanAccount loanAccount,
+ String caseIdentifier) {
+ return authenticatedCompletableApi(
+ baseApiManager.getLoanApi().
+ updateLoan(productIdentifier, caseIdentifier, loanAccount));
+ }
}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.kt b/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.kt
index 4a9e876..043d882 100644
--- a/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.kt
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.kt
@@ -1,13 +1,16 @@
package org.apache.fineract.data.models.loan
+import android.os.Parcelable
import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
/**
* @author Rajan Maurya
* On 09/07/17.
*/
+@Parcelize
data class AccountAssignment (
@SerializedName("designator") var designator: String? = null,
@SerializedName("accountIdentifier") var accountIdentifier: String? = null,
@SerializedName("ledgerIdentifier") var ledgerIdentifier: String? = null
-)
\ No newline at end of file
+):Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.kt b/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.kt
index b1daa84..c7dd13f 100644
--- a/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.kt
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.kt
@@ -1,14 +1,16 @@
package org.apache.fineract.data.models.loan
+import android.os.Parcelable
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
-
-import java.util.ArrayList
+import kotlinx.android.parcel.Parcelize
+import java.util.*
/**
* @author Rajan Maurya
* On 09/07/17.
*/
+@Parcelize
data class LoanAccount(
@SerializedName("identifier") var identifier: String? = null,
@SerializedName("productIdentifier") var productIdentifier: String? = null,
@@ -20,7 +22,7 @@
@SerializedName("createdBy") var createdBy: String? = null,
@SerializedName("lastModifiedOn") var lastModifiedOn: String? = null,
@SerializedName("lastModifiedBy") var lastModifiedBy: String? = null
-) {
+):Parcelable {
private val loanParameters: LoanParameters? = null
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.kt b/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.kt
index 08e9b08..cbd83d4 100644
--- a/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.kt
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.kt
@@ -1,17 +1,21 @@
package org.apache.fineract.data.models.loan
+import android.os.Parcelable
import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+import kotlinx.android.parcel.RawValue
/**
* @author Rajan Maurya
* On 12/07/17.
*/
+@Parcelize
data class LoanParameters(
- @SerializedName("customerIdentifier") var customerIdentifier: String? = null,
- @SerializedName("creditWorthinessSnapshots") var creditWorthinessSnapshots:
- List<CreditWorthinessSnapshot>? = null,
- @SerializedName("maximumBalance") var maximumBalance: Double? = null,
- @SerializedName("termRange") var termRange: TermRange? = null,
- @SerializedName("paymentCycle") var paymentCycle: PaymentCycle? = null
-)
\ No newline at end of file
+ @SerializedName("customerIdentifier") var customerIdentifier: String? = null,
+ @SerializedName("creditWorthinessSnapshots") var creditWorthinessSnapshots:
+ List<CreditWorthinessSnapshot>? = null,
+ @SerializedName("maximumBalance") var maximumBalance: Double? = null,
+ @SerializedName("termRange") var termRange: @RawValue TermRange? = null,
+ @SerializedName("paymentCycle") var paymentCycle: @RawValue PaymentCycle? = null
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/services/LoanService.java b/app/src/main/java/org/apache/fineract/data/services/LoanService.java
index f547c9f..b419331 100644
--- a/app/src/main/java/org/apache/fineract/data/services/LoanService.java
+++ b/app/src/main/java/org/apache/fineract/data/services/LoanService.java
@@ -10,12 +10,13 @@
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
+import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;
/**
* @author Rajan Maurya
- * On 07/07/17.
+ * On 07/07/17.
*/
public interface LoanService {
@@ -40,4 +41,10 @@
Completable createLoan(
@Path("productidentifier") String productidentifier,
@Body LoanAccount loanAccount);
+
+ @PUT(EndPoints.API_PORTFOLIO_PATH + "/products/{productidentifier}/cases/{caseidentifier}")
+ Completable updateLoan(
+ @Path("productidentifier") String productIdentifier,
+ @Path("caseidentifier") String caseIdentifier,
+ @Body LoanAccount loanAccount);
}
diff --git a/app/src/main/java/org/apache/fineract/ui/adapters/LoanApplicationStepAdapter.java b/app/src/main/java/org/apache/fineract/ui/adapters/LoanApplicationStepAdapter.java
index 924ed33..8566f04 100644
--- a/app/src/main/java/org/apache/fineract/ui/adapters/LoanApplicationStepAdapter.java
+++ b/app/src/main/java/org/apache/fineract/ui/adapters/LoanApplicationStepAdapter.java
@@ -1,6 +1,7 @@
package org.apache.fineract.ui.adapters;
import android.content.Context;
+
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentManager;
@@ -10,6 +11,8 @@
import com.stepstone.stepper.viewmodel.StepViewModel;
import org.apache.fineract.R;
+import org.apache.fineract.data.models.loan.LoanAccount;
+import org.apache.fineract.ui.online.loanaccounts.loanapplication.LoanApplicationAction;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.LoanDebtIncomeFragment;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.loancosigner.LoanCoSignerFragment;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.loandetails.LoanDetailsFragment;
@@ -17,16 +20,23 @@
/**
* @author Rajan Maurya
- * On 17/07/17.
+ * On 17/07/17.
*/
public class LoanApplicationStepAdapter extends AbstractFragmentStepAdapter {
private String[] loanApplicationSteps;
+ private LoanAccount loanAccount;
+ private LoanApplicationAction loanApplicationAction;
- public LoanApplicationStepAdapter(@NonNull FragmentManager fm, @NonNull Context context) {
+ public LoanApplicationStepAdapter(@NonNull FragmentManager fm,
+ @NonNull Context context,
+ @NonNull LoanAccount loanAccount,
+ @NonNull LoanApplicationAction loanApplicationAction) {
super(fm, context);
loanApplicationSteps = context.getResources().getStringArray(
R.array.loan_application_steps);
+ this.loanAccount = loanAccount;
+ this.loanApplicationAction = loanApplicationAction;
}
@NonNull
@@ -41,11 +51,11 @@
public Step createStep(@IntRange(from = 0L) int position) {
switch (position) {
case 0:
- return LoanDetailsFragment.newInstance();
+ return LoanDetailsFragment.newInstance(loanAccount, loanApplicationAction);
case 1:
- return LoanDebtIncomeFragment.newInstance();
+ return LoanDebtIncomeFragment.newInstance(loanAccount, loanApplicationAction);
case 2:
- return LoanCoSignerFragment.newInstance();
+ return LoanCoSignerFragment.newInstance(loanAccount, loanApplicationAction);
case 3:
return AddLoanReviewFragment.Companion.newInstance();
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsFragment.java
index 7862fca..a0ea70e 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsFragment.java
@@ -24,6 +24,7 @@
import org.apache.fineract.ui.base.FineractBaseFragment;
import org.apache.fineract.ui.base.OnItemClickListener;
import org.apache.fineract.ui.base.Toaster;
+import org.apache.fineract.ui.online.loanaccounts.loanapplication.LoanApplicationAction;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.loanactivity.LoanApplicationActivity;
import org.apache.fineract.ui.online.loanaccounts.loandetails.CustomerLoanDetailsFragment;
import org.apache.fineract.utils.ConstantKeys;
@@ -39,7 +40,7 @@
/**
* @author Rajan Maurya
- * On 07/07/17.
+ * On 07/07/17.
*/
public class LoanAccountsFragment extends FineractBaseFragment implements LoanAccountsContract.View,
SwipeRefreshLayout.OnRefreshListener, OnItemClickListener {
@@ -83,7 +84,7 @@
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
+ @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_customer_loans, container, false);
((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
ButterKnife.bind(this, rootView);
@@ -119,6 +120,7 @@
void createNewLoan() {
Intent intent = new Intent(getActivity(), LoanApplicationActivity.class);
intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, customerIdentifier);
+ intent.putExtra(ConstantKeys.LOAN_APPLICATION_ACTION, LoanApplicationAction.CREATE);
startActivity(intent);
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/BaseFragmentDebtIncome.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/BaseFragmentDebtIncome.java
index 91d12fc..e70e63c 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/BaseFragmentDebtIncome.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/BaseFragmentDebtIncome.java
@@ -69,8 +69,8 @@
private Double totalIncome = 0.0;
private Double ratio = 00.00;
- private List<CreditWorthinessFactor> debtCreditWorthinessFactors;
- private List<CreditWorthinessFactor> incomeCreditWorthinessFactors;
+ protected List<CreditWorthinessFactor> debtCreditWorthinessFactors;
+ protected List<CreditWorthinessFactor> incomeCreditWorthinessFactors;
@Override
public void onCreate(Bundle savedInstanceState) {
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/LoanApplicationAction.kt b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/LoanApplicationAction.kt
new file mode 100644
index 0000000..c9f745c
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/LoanApplicationAction.kt
@@ -0,0 +1,6 @@
+package org.apache.fineract.ui.online.loanaccounts.loanapplication
+
+enum class LoanApplicationAction {
+ CREATE,
+ EDIT
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/LoanDebtIncomeFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/LoanDebtIncomeFragment.java
index 173a9e4..31a1fdc 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/LoanDebtIncomeFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/LoanDebtIncomeFragment.java
@@ -3,29 +3,72 @@
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
-import androidx.annotation.NonNull;
+import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.gson.Gson;
import com.stepstone.stepper.Step;
import com.stepstone.stepper.VerificationError;
import org.apache.fineract.R;
+import org.apache.fineract.data.models.loan.CreditWorthinessFactor;
+import org.apache.fineract.data.models.loan.CreditWorthinessSnapshot;
+import org.apache.fineract.data.models.loan.LoanAccount;
+import org.apache.fineract.data.models.loan.LoanParameters;
+import org.apache.fineract.utils.ConstantKeys;
+
+import java.util.Objects;
/**
* @author Rajan Maurya
- * On 24/07/17.
+ * On 24/07/17.
*/
public class LoanDebtIncomeFragment extends BaseFragmentDebtIncome implements Step {
private OnNavigationBarListener.LoanDebtIncomeData onNavigationBarListener;
+ private LoanApplicationAction loanApplicationAction;
+ private LoanAccount loanAccount;
+ private LoanParameters loanParameters;
- public static LoanDebtIncomeFragment newInstance() {
+ public static LoanDebtIncomeFragment newInstance(
+ LoanAccount loanAccount,
+ LoanApplicationAction loanApplicationAction) {
LoanDebtIncomeFragment fragment = new LoanDebtIncomeFragment();
Bundle args = new Bundle();
+ args.putSerializable(ConstantKeys.LOAN_APPLICATION_ACTION, loanApplicationAction);
+ args.putParcelable(ConstantKeys.LOAN_ACCOUNT, loanAccount);
fragment.setArguments(args);
return fragment;
}
@Override
+ public void onViewCreated(@NonNull View view,
+ @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ loanApplicationAction = (LoanApplicationAction) getArguments()
+ .getSerializable(ConstantKeys.LOAN_APPLICATION_ACTION);
+
+ if (loanApplicationAction == LoanApplicationAction.EDIT) {
+ loanAccount = getArguments().getParcelable(ConstantKeys.LOAN_ACCOUNT);
+ loanParameters = new Gson().fromJson(loanAccount.getParameters(), LoanParameters.class);
+ for (CreditWorthinessSnapshot snapshot
+ : Objects.requireNonNull(loanParameters.getCreditWorthinessSnapshots())) {
+ for (CreditWorthinessFactor debt : snapshot.getDebts()) {
+ addDebt(debt);
+ }
+
+ for (CreditWorthinessFactor income : snapshot.getIncomeSources()) {
+ addDebt(income);
+ }
+ }
+
+ }
+
+ }
+
+ @Override
protected int getFragmentLayout() {
return R.layout.fragment_loan_debt_income_ratio;
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationActivity.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationActivity.java
index 4dd4e51..578a915 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationActivity.java
@@ -17,6 +17,7 @@
import org.apache.fineract.ui.adapters.LoanApplicationStepAdapter;
import org.apache.fineract.ui.base.FineractBaseActivity;
import org.apache.fineract.ui.base.Toaster;
+import org.apache.fineract.ui.online.loanaccounts.loanapplication.LoanApplicationAction;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.OnNavigationBarListener;
import org.apache.fineract.utils.ConstantKeys;
@@ -30,7 +31,7 @@
/**
* @author Rajan Maurya
- * On 17/07/17.
+ * On 17/07/17.
*/
public class LoanApplicationActivity extends FineractBaseActivity
implements StepperLayout.StepperListener, OnNavigationBarListener.LoanDetailsData,
@@ -53,6 +54,8 @@
private String customerIdentifier;
private LoanParameters loanParameters;
private String selectedProduct;
+ private LoanApplicationAction loanApplicationAction;
+ private String caseIdentifier;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -64,18 +67,31 @@
creditWorthinessSnapshots = new ArrayList<>();
loanAccount = new LoanAccount();
loanParameters = new LoanParameters();
-
+ loanApplicationAction = (LoanApplicationAction) getIntent()
+ .getSerializableExtra(ConstantKeys.LOAN_APPLICATION_ACTION);
customerIdentifier = getIntent().getExtras().getString(ConstantKeys.CUSTOMER_IDENTIFIER);
+ switch (loanApplicationAction) {
+ case CREATE:
+ setToolbarTitle(getString(R.string.create_new_loan));
+ break;
+ case EDIT:
+ setToolbarTitle(getString(R.string.edit_loan));
+ caseIdentifier = getIntent().getExtras().getString(ConstantKeys.CASE_IDENTIFIER);
+ loanAccount = getIntent().getExtras().getParcelable(ConstantKeys.LOAN_ACCOUNT);
+ if (loanAccount != null) {
+ loanParameters = loanAccount.getLoanParameters();
+ }
+ }
if (savedInstanceState != null) {
currentPosition = savedInstanceState.getInt(CURRENT_STEP_POSITION);
}
LoanApplicationStepAdapter stepAdapter = new LoanApplicationStepAdapter(
- getSupportFragmentManager(), this);
+ getSupportFragmentManager(), this, loanAccount, loanApplicationAction);
stepperLayout.setAdapter(stepAdapter, currentPosition);
stepperLayout.setListener(this);
stepperLayout.setOffscreenPageLimit(stepAdapter.getCount());
- setToolbarTitle(getString(R.string.create_new_loan));
+
showBackButton();
}
@@ -94,7 +110,18 @@
@Override
public void onCompleted(View completeButton) {
loanParameters.setCreditWorthinessSnapshots(creditWorthinessSnapshots);
- loanApplicationPresenter.createLoan(loanAccount.getProductIdentifier(), loanAccount);
+ switch (loanApplicationAction) {
+ case CREATE:
+ loanApplicationPresenter.createLoan(
+ loanAccount.getProductIdentifier(),
+ loanAccount);
+ case EDIT:
+ loanApplicationPresenter.updateLoan(
+ loanAccount.getProductIdentifier(),
+ loanAccount,
+ caseIdentifier);
+ }
+
}
@Override
@@ -120,6 +147,11 @@
}
@Override
+ public void applicationUpdatedSuccessfully() {
+ finish();
+ }
+
+ @Override
public void showProgressbar(String message) {
stepperLayout.showProgress(message);
}
@@ -140,9 +172,12 @@
}
@Override
- public void setLoanDetails(LoanAccount.State currentState, String identifier,
- String productIdentifier, Double maximumBalance, PaymentCycle paymentCycle,
- TermRange termRange, String selectedProduct) {
+ public void setLoanDetails(LoanAccount.State currentState,
+ String identifier,
+ String productIdentifier,
+ Double maximumBalance,
+ PaymentCycle paymentCycle,
+ TermRange termRange, String selectedProduct) {
this.selectedProduct = selectedProduct;
loanAccount.setCurrentState(currentState);
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationContract.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationContract.java
index 753d63e..4722418 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationContract.java
@@ -13,6 +13,8 @@
void applicationCreatedSuccessfully();
+ void applicationUpdatedSuccessfully();
+
void showProgressbar(String message);
void hideProgressbar();
@@ -23,5 +25,7 @@
interface Presenter {
void createLoan(String productIdentifier, LoanAccount loanAccount);
+
+ void updateLoan(String productIdentifier, LoanAccount loanAccount, String caseIdentifier);
}
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationPresenter.java
index 8bcf87b..a53b716 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationPresenter.java
@@ -18,7 +18,7 @@
/**
* @author Rajan Maurya
- * On 24/07/17.
+ * On 24/07/17.
*/
@ConfigPersistent
public class LoanApplicationPresenter extends BasePresenter<LoanApplicationContract.View>
@@ -29,7 +29,7 @@
@Inject
public LoanApplicationPresenter(@ApplicationContext Context context,
- DataManagerLoans dataManagerLoans) {
+ DataManagerLoans dataManagerLoans) {
super(context);
this.dataManagerLoans = dataManagerLoans;
compositeDisposable = new CompositeDisposable();
@@ -69,4 +69,34 @@
})
);
}
+
+ @Override
+ public void updateLoan(String productIdentifier,
+ LoanAccount loanAccount,
+ String caseIdentifier) {
+ checkViewAttached();
+ getMvpView().showProgressbar(context.getString(R.string.updating_loan_please_wait));
+ compositeDisposable.add(dataManagerLoans.updateLoan(
+ productIdentifier,
+ loanAccount,
+ caseIdentifier
+ ).subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribeWith(new DisposableCompletableObserver() {
+ @Override
+ public void onComplete() {
+ getMvpView().hideProgressbar();
+ getMvpView().applicationUpdatedSuccessfully();
+ }
+
+ @Override
+ public void onError(Throwable throwable) {
+ getMvpView().hideProgressbar();
+ showExceptionError(throwable,
+ context.getString(R.string.error_while_updating_loan));
+ }
+ })
+ );
+ }
+
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerFragment.java
index 21f82fc..4851655 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerFragment.java
@@ -3,23 +3,29 @@
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.ImageView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.gson.Gson;
import com.stepstone.stepper.Step;
import com.stepstone.stepper.VerificationError;
import org.apache.fineract.R;
import org.apache.fineract.data.models.loan.CreditWorthinessSnapshot;
+import org.apache.fineract.data.models.loan.LoanAccount;
+import org.apache.fineract.data.models.loan.LoanParameters;
import org.apache.fineract.ui.base.FineractBaseActivity;
import org.apache.fineract.ui.base.Toaster;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.BaseFragmentDebtIncome;
+import org.apache.fineract.ui.online.loanaccounts.loanapplication.LoanApplicationAction;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.OnNavigationBarListener;
+import org.apache.fineract.utils.ConstantKeys;
import java.util.List;
@@ -30,7 +36,7 @@
/**
* @author Rajan Maurya
- * On 19/07/17.
+ * On 19/07/17.
*/
public class LoanCoSignerFragment extends BaseFragmentDebtIncome implements Step,
LoanCoSignerContract.View {
@@ -49,10 +55,17 @@
String[] customers;
private OnNavigationBarListener.LoanCoSignerData onNavigationBarListener;
+ private LoanAccount loanAccount;
+ private LoanApplicationAction loanApplicationAction;
+ private LoanParameters loanParameters;
- public static LoanCoSignerFragment newInstance() {
+ public static LoanCoSignerFragment newInstance(
+ LoanAccount loanAccount,
+ LoanApplicationAction loanApplicationAction) {
LoanCoSignerFragment fragment = new LoanCoSignerFragment();
Bundle args = new Bundle();
+ args.putSerializable(ConstantKeys.LOAN_APPLICATION_ACTION, loanApplicationAction);
+ args.putParcelable(ConstantKeys.LOAN_ACCOUNT, loanAccount);
fragment.setArguments(args);
return fragment;
}
@@ -62,13 +75,23 @@
super.onViewCreated(view, savedInstanceState);
((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
loanCoSignerPresenter.attachView(this);
+ loanApplicationAction = (LoanApplicationAction) getArguments()
+ .getSerializable(ConstantKeys.LOAN_APPLICATION_ACTION);
+ if (loanApplicationAction == LoanApplicationAction.EDIT) {
+ loanAccount = getArguments().getParcelable(ConstantKeys.LOAN_ACCOUNT);
+ loanParameters = new Gson().fromJson(loanAccount.getParameters(), LoanParameters.class);
+ etCustomer.setText(
+ loanParameters.getCreditWorthinessSnapshots().get(0).getForCustomer()
+ );
+ }
rootView = view;
}
@OnClick(R.id.iv_search_customer)
void searchCustomer() {
if (TextUtils.isEmpty(etCustomer.getText().toString())) {
- Toaster.show(rootView, getString(R.string.customer_name_should_not_be_empty));
+ Toaster.show(rootView,
+ getString(R.string.customer_name_should_not_be_empty));
} else {
loanCoSignerPresenter.searchCustomer(etCustomer.getText().toString().trim());
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerPresenter.java
index ee34cd2..a26d4e3 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerPresenter.java
@@ -23,7 +23,7 @@
/**
* @author Rajan Maurya
- * On 24/07/17.
+ * On 24/07/17.
*/
@ConfigPersistent
public class LoanCoSignerPresenter extends BasePresenter<LoanCoSignerContract.View>
@@ -37,7 +37,7 @@
@Inject
public LoanCoSignerPresenter(@ApplicationContext Context context,
- DataManagerCustomer dataManagerCustomer) {
+ DataManagerCustomer dataManagerCustomer) {
super(context);
this.dataManagerCustomer = dataManagerCustomer;
compositeDisposable = new CompositeDisposable();
@@ -96,6 +96,7 @@
@Override
public Boolean findCustomer(final String customer, String[] customers) {
boolean isCustomerPresent = false;
+ if (customers == null) return false;
for (String s : customers) {
if (s.equals(customer)) {
isCustomerPresent = true;
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsContract.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsContract.java
index f591509..c13ae62 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsContract.java
@@ -7,7 +7,7 @@
/**
* @author Rajan Maurya
- * On 20/07/17.
+ * On 20/07/17.
*/
public class LoanDetailsContract {
@@ -46,5 +46,7 @@
void setProductPositionAndValidateViews(Integer position);
List<String> getCurrentTermUnitType(List<String> unitTypes, String unitType);
+
+ int getItemIndexFromList(List<String> list, String item);
}
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
index 54e208b..1acf683 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
@@ -3,11 +3,6 @@
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import com.google.android.material.textfield.TextInputLayout;
-import androidx.core.widget.NestedScrollView;
-import androidx.appcompat.widget.AppCompatSpinner;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
@@ -19,18 +14,28 @@
import android.widget.LinearLayout;
import android.widget.RadioButton;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatSpinner;
+import androidx.core.widget.NestedScrollView;
+
+import com.google.android.material.textfield.TextInputLayout;
+import com.google.gson.Gson;
import com.stepstone.stepper.Step;
import com.stepstone.stepper.VerificationError;
import org.apache.fineract.R;
import org.apache.fineract.data.models.loan.LoanAccount;
+import org.apache.fineract.data.models.loan.LoanParameters;
import org.apache.fineract.data.models.loan.PaymentCycle;
import org.apache.fineract.data.models.loan.TermRange;
import org.apache.fineract.data.models.product.Product;
import org.apache.fineract.ui.base.FineractBaseActivity;
import org.apache.fineract.ui.base.FineractBaseFragment;
import org.apache.fineract.ui.base.Toaster;
+import org.apache.fineract.ui.online.loanaccounts.loanapplication.LoanApplicationAction;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.OnNavigationBarListener;
+import org.apache.fineract.utils.ConstantKeys;
import org.apache.fineract.utils.Utils;
import org.apache.fineract.utils.ValidateIdentifierUtil;
import org.apache.fineract.utils.ValidationUtil;
@@ -47,7 +52,7 @@
/**
* @author Rajan Maurya
- * On 17/07/17.
+ * On 17/07/17.
*/
public class LoanDetailsFragment extends FineractBaseFragment implements Step,
LoanDetailsContract.View, AdapterView.OnItemSelectedListener, TextWatcher {
@@ -141,10 +146,17 @@
private ArrayAdapter<String> productsAdapter;
private ArrayAdapter<String> termUnitTypeAdapter;
+ private LoanAccount loanAccount;
+ private LoanParameters loanParameters;
+ private LoanApplicationAction loanApplicationAction;
- public static LoanDetailsFragment newInstance() {
+ public static LoanDetailsFragment newInstance(
+ LoanAccount loanAccount,
+ LoanApplicationAction loanApplicationAction) {
LoanDetailsFragment fragment = new LoanDetailsFragment();
Bundle args = new Bundle();
+ args.putParcelable(ConstantKeys.LOAN_ACCOUNT, loanAccount);
+ args.putSerializable(ConstantKeys.LOAN_APPLICATION_ACTION, loanApplicationAction);
fragment.setArguments(args);
return fragment;
}
@@ -170,12 +182,23 @@
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
+ @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_loan_details, container, false);
ButterKnife.bind(this, rootView);
initializeFineractUIErrorHandler(getActivity(), rootView);
loanDetailsPresenter.attachView(this);
+ if (getArguments() != null) {
+ loanApplicationAction = (LoanApplicationAction) getArguments().getSerializable(
+ ConstantKeys.LOAN_APPLICATION_ACTION);
+ }
+
+ if (loanApplicationAction == LoanApplicationAction.EDIT) {
+ loanAccount = getArguments().getParcelable(ConstantKeys.LOAN_ACCOUNT);
+ loanParameters = new Gson().fromJson(loanAccount.getParameters(), LoanParameters.class);
+ }
+
+
showUserInterface();
loanDetailsPresenter.fetchProducts();
@@ -190,6 +213,65 @@
loanDetailsPresenter.fetchProducts();
}
+ public void showPreviousLoanDetails() {
+ spProducts.setSelection(loanDetailsPresenter.getItemIndexFromList(
+ products,
+ loanAccount.getProductIdentifier()
+ ));
+ etRepay.setText(String.valueOf(
+ loanParameters.getPaymentCycle().getPeriod()
+ ));
+ spTermUnitType.setSelection(
+ loanDetailsPresenter.getItemIndexFromList(
+ repayUnitType,
+ String.valueOf(loanParameters.getPaymentCycle().getTemporalUnit()))
+ );
+
+
+ int unitType = loanDetailsPresenter.getItemIndexFromList(
+ repayUnitType,
+ String.valueOf(loanParameters.getPaymentCycle().getTemporalUnit()));
+ switch (unitType) {
+ case 0:
+ spRepayUnitType.setSelection(0);
+ spRepayWeekDays.setSelection(loanParameters.getPaymentCycle().getAlignmentDay());
+ break;
+ case 1:
+ spRepayUnitType.setSelection(1);
+ if (loanParameters.getPaymentCycle().getAlignmentMonth() == null) {
+ spRepayWeekDays.setSelection(
+ loanParameters.getPaymentCycle().getAlignmentDay());
+ rbRepayOnSpecificDay.setChecked(true);
+ spRepayTimeSlots.setSelection(
+ loanParameters.getPaymentCycle().getAlignmentWeek());
+ } else {
+ rbRepayOnDay.setChecked(true);
+ spRepayMonthDayInNumber.setSelection(
+ loanParameters.getPaymentCycle().getAlignmentDay());
+ }
+ break;
+ case 2:
+ spRepayUnitType.setSelection(2);
+ if (loanParameters.getPaymentCycle().getAlignmentMonth() == null) {
+ rbRepayOnSpecificDay.setChecked(true);
+ spRepayWeekDays.setSelection(
+ loanParameters.getPaymentCycle().getAlignmentDay());
+ spRepayTimeSlots.setSelection(
+ loanParameters.getPaymentCycle().getAlignmentWeek());
+ } else {
+ spRepayMonthDayInNumber.setSelection(
+ loanParameters.getPaymentCycle().getAlignmentDay());
+ spRepayYearMonth.setSelection(
+ loanParameters.getPaymentCycle().getAlignmentMonth());
+ }
+ break;
+ }
+
+ etShortName.setText(loanAccount.getIdentifier());
+ etPrincipalAmount.setText(String.valueOf(loanParameters.getMaximumBalance()));
+ etTerm.setText(String.valueOf(loanParameters.getTermRange().getMaximum()));
+ }
+
@Override
public VerificationError verifyStep() {
if (!validateShortName() || !validateTerm() || !validateRepay()
@@ -233,11 +315,12 @@
Double.parseDouble(etTerm.getText().toString().trim()))
, spProducts.getSelectedItem().toString());
-
return null;
}
+
}
+
@Override
public void onSelected() {
// when every condition will fine in verifyStep();
@@ -343,14 +426,19 @@
@Override
public void setComponentsValidations(Product product) {
this.product = product;
- etPrincipalAmount.setText(String.valueOf(product.getBalanceRange().getMinimum()));
ternUnitType.clear();
ternUnitType.addAll(loanDetailsPresenter.getCurrentTermUnitType(
repayUnitType, product.getTermRange().getTemporalUnit()));
termUnitTypeAdapter.notifyDataSetChanged();
spTermUnitType.setEnabled(false);
- etTerm.setText("1");
- etRepay.setText("1");
+
+ if (loanApplicationAction == LoanApplicationAction.CREATE) {
+ etPrincipalAmount.setText(String.valueOf(product.getBalanceRange().getMinimum()));
+ etTerm.setText("1");
+ etRepay.setText("1");
+ } else {
+ showPreviousLoanDetails();
+ }
}
@Override
@@ -538,4 +626,6 @@
outState.putStringArrayList("products", (ArrayList<String>) products);
super.onSaveInstanceState(outState);
}
+
+
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsPresenter.java
index 67fc9ea..210c0b4 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsPresenter.java
@@ -25,7 +25,7 @@
/**
* @author Rajan Maurya
- * On 20/07/17.
+ * On 20/07/17.
*/
@ConfigPersistent
public class LoanDetailsPresenter extends BasePresenter<LoanDetailsContract.View>
@@ -41,7 +41,7 @@
@Inject
public LoanDetailsPresenter(@ApplicationContext Context context,
- DataManagerLoans dataManagerLoans) {
+ DataManagerLoans dataManagerLoans) {
super(context);
this.dataManagerLoans = dataManagerLoans;
compositeDisposable = new CompositeDisposable();
@@ -117,4 +117,16 @@
}
}).toList().blockingGet();
}
+
+ @Override
+ public int getItemIndexFromList(List<String> list, String item) {
+ int index = 0;
+ for (int i = 0; i < list.size(); i++) {
+ if (list.get(i).equals(item)) {
+ index = i;
+ break;
+ }
+ }
+ return index;
+ }
}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsFragment.java
index 51cbc3b..2128429 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsFragment.java
@@ -2,9 +2,6 @@
import android.content.Intent;
import android.os.Bundle;
-import androidx.annotation.Nullable;
-import androidx.coordinatorlayout.widget.CoordinatorLayout;
-import androidx.core.widget.NestedScrollView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -15,6 +12,11 @@
import android.widget.RelativeLayout;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.core.widget.NestedScrollView;
+
import com.google.gson.Gson;
import org.apache.fineract.R;
@@ -22,8 +24,9 @@
import org.apache.fineract.data.models.loan.PaymentCycle;
import org.apache.fineract.ui.base.FineractBaseActivity;
import org.apache.fineract.ui.base.FineractBaseFragment;
-import org.apache.fineract.ui.base.Toaster;
import org.apache.fineract.ui.online.loanaccounts.debtincomereport.DebtIncomeReportActivity;
+import org.apache.fineract.ui.online.loanaccounts.loanapplication.LoanApplicationAction;
+import org.apache.fineract.ui.online.loanaccounts.loanapplication.loanactivity.LoanApplicationActivity;
import org.apache.fineract.ui.online.loanaccounts.plannedpayment.PlannedPaymentActivity;
import org.apache.fineract.utils.ConstantKeys;
import org.apache.fineract.utils.DateUtils;
@@ -38,7 +41,7 @@
/**
* @author Rajan Maurya
- * On 11/07/17.
+ * On 11/07/17.
*/
public class CustomerLoanDetailsFragment extends FineractBaseFragment implements
CustomerLoanDetailsContract.View {
@@ -94,9 +97,10 @@
private String caseIdentifier;
private LoanAccount loanAccount;
private String[] weeksName, repayOnMonths, timeSlots, monthsName;
+ private Menu menu;
public static CustomerLoanDetailsFragment newInstance(String productIdentifier,
- String caseIdentifier) {
+ String caseIdentifier) {
CustomerLoanDetailsFragment fragment = new CustomerLoanDetailsFragment();
Bundle args = new Bundle();
args.putString(ConstantKeys.PRODUCT_IDENTIFIER, productIdentifier);
@@ -121,7 +125,7 @@
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
+ @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_customer_loan_details, container, false);
((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
ButterKnife.bind(this, rootView);
@@ -235,6 +239,11 @@
tvLastModifiedBy.setText(getString(R.string.loan_last_modified_by,
loanAccount.getLastModifiedBy(),
DateUtils.getDateTime(loanAccount.getLastModifiedOn())));
+
+ if (loanAccount.getCurrentState() == LoanAccount.State.APPROVED ||
+ loanAccount.getCurrentState() == LoanAccount.State.CLOSED) {
+ hideEditMenu(menu);
+ }
}
@Override
@@ -265,14 +274,23 @@
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_loan_account_details, menu);
Utils.setToolbarIconColor(getActivity(), menu, R.color.white);
+ this.menu = menu;
super.onCreateOptionsMenu(menu, inflater);
}
+ private void hideEditMenu(@NonNull Menu menu) {
+ menu.findItem(R.id.menu_loan_account_edit).setVisible(false);
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_loan_account_edit:
- Toaster.show(rootView, R.string.Under_construction);
+ Intent intent = new Intent(getActivity(), LoanApplicationActivity.class)
+ .putExtra(ConstantKeys.CASE_IDENTIFIER, caseIdentifier)
+ .putExtra(ConstantKeys.LOAN_APPLICATION_ACTION, LoanApplicationAction.EDIT)
+ .putExtra(ConstantKeys.LOAN_ACCOUNT, loanAccount);
+ startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
diff --git a/app/src/main/java/org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt
index 6115765..88f7dd0 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/review/AddLoanReviewFragment.kt
@@ -2,10 +2,10 @@
import android.content.Context
import android.os.Bundle
-import androidx.recyclerview.widget.LinearLayoutManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import butterknife.ButterKnife
import com.stepstone.stepper.Step
@@ -240,7 +240,6 @@
}
-
private fun showTotalIncome(pos: Int): Double {
var totalIncome = 0.0
diff --git a/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java b/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
index 028076b..76c9d99 100644
--- a/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
+++ b/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
@@ -2,11 +2,11 @@
/**
* @author Rajan Maurya
- * On 27/06/17.
+ * On 27/06/17.
*/
public class ConstantKeys {
- public static final String CUSTOMER_IDENTIFIER = "customer_identifier";
+ public static final String CUSTOMER_IDENTIFIER = "customer_identifier";
public static final String CUSTOMER_STATUS = "customer_status";
public static final String IS_NEW_CUSTOMER = "is_new_customer";
public static final String CUSTOMER_ACTION = "customer_action";
@@ -25,6 +25,9 @@
public static final String DEPOSIT_ACTION = "deposit_action";
public static final String DEPOSIT_ACCOUNT = "deposit";
public static final String COUNTRIES = "countries";
+ public static final String LOAN_ACCOUNT = "loan_account";
+ public static final String LOAN_APPLICATION_ACTION = "loan_application_action";
+
public static final String PAYROLL_CONFIG = "payrollConfiguration";
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index af22aaa..b25c3ac 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -112,6 +112,7 @@
<string name="browse">Browse…</string>
<string name="fetching_customer_please_wait">Fetching customer please wait…</string>
<string name="creating_loan_please_wait">Creating loan please wait…</string>
+ <string name="updating_loan_please_wait">Updating loan please wait…</string>
<string name="updating_customer_please_wait">Updating customer please wait…</string>
<string name="creating_customer_please_wait">Creating customer please wait…</string>
<string name="creating_identification_card_please_wait">Creating identification card please wait…</string>
@@ -293,6 +294,7 @@
<string name="error_should_contain_only">should contain only</string>
<string name="error_loading_products">Error while fetching products</string>
<string name="error_while_creating_loan">Error while creating loan</string>
+ <string name="error_while_updating_loan">Error while updating loan</string>
<string name="error_loading_countries">Error while fetching countries</string>
<string name="error_creating_customer">Error while creating customer</string>
<string name="error_updating_customer">Error while updating customer</string>
diff --git a/app/src/main/resources/loanAccount.json b/app/src/main/resources/loanAccount.json
index c619478..032d15e 100644
--- a/app/src/main/resources/loanAccount.json
+++ b/app/src/main/resources/loanAccount.json
@@ -1,7 +1,7 @@
{
"identifier": "identifier",
"productIdentifier": "productIdentifier",
- "parameters": "{\"customerIdentifier\":\"customerIdentifier\",\"maximumBalance\": 343.45,\"termRange\": {\"temporalUnit\": \"WEEKS\", \"maximum\": 45.45 }, \"paymentCycle\": {\"temporalUnit\": \"WEEKS\",\"period\": 1,\"alignmentDay\": 1,\"alignmentWeek\": 1,\"alignmentMonth\": 1},\"creditWorthinessSnapshots\":[{\"forCustomer\":\"forCustomer\"}]}",
+ "parameters": "{\"customerIdentifier\":\"customerIdentifier\",\"maximumBalance\": 343.45,\"termRange\": {\"temporalUnit\": \"WEEKS\", \"maximum\": 45.00 }, \"paymentCycle\": {\"temporalUnit\": \"WEEKS\",\"period\": 1,\"alignmentDay\": 1,\"alignmentWeek\": 1,\"alignmentMonth\": 1},\"creditWorthinessSnapshots\":[{\"forCustomer\":\"forCustomer\"}]}",
"accountAssignments": [
{
"designator": "designator",
@@ -22,19 +22,19 @@
"incomeSources": [
{
"description": "description",
- "amount": 45.45
+ "amount": 45.00
}
],
"assets": [
{
"description": "description",
- "amount": 45.45
+ "amount": 45.00
}
],
"debts": [
{
"description": "description",
- "amount": 45.45
+ "amount": 45.00
}
]
}