Index: src/org/mifos/application/accounts/struts/action/AccountApplyPaymentAction.java
===================================================================
--- src/org/mifos/application/accounts/struts/action/AccountApplyPaymentAction.java	(revision 12248)
+++ src/org/mifos/application/accounts/struts/action/AccountApplyPaymentAction.java	(working copy)
@@ -115,10 +115,27 @@
 		account.setUserContext(uc);
 		SessionUtils.setAttribute(Constants.BUSINESS_KEY, account, request);
 		AcceptedPaymentTypePersistence persistence = new AcceptedPaymentTypePersistence();
-		SessionUtils.setCollectionAttribute(MasterConstants.PAYMENT_TYPE,
+		
+		// modified for defect 1590 [start]
+		String input = request.getParameter(Constants.INPUT);
+		if(input != null && input.trim() != Constants.EMPTY_STRING)
+		{
+			if(input.equals(Constants.LOAN))
+			{
+				SessionUtils.setCollectionAttribute(MasterConstants.PAYMENT_TYPE,
 				persistence.getAcceptedPaymentTypesForATransaction(
 						uc.getLocaleId(),
 						TrxnTypes.loan_repayment.getValue()), request);
+			}
+			else
+			{
+				SessionUtils.setCollectionAttribute(MasterConstants.PAYMENT_TYPE,
+						persistence.getAcceptedPaymentTypesForATransaction(
+								uc.getLocaleId(),
+								TrxnTypes.fee.getValue()), request);
+			}
+		}		
+		// modified for defect 1590 [end]
 
 		actionForm.setAmount(account.getTotalPaymentDue());
 		return mapping.findForward(ActionForwards.load_success.toString());
@@ -198,7 +215,7 @@
 	}
 
 	private String getForward(String input) {
-		if (input.equals("loan"))
+		if (input.equals(Constants.LOAN))
 			return ActionForwards.loan_detail_page.toString();
 		else
 			return "applyPayment_success";
Index: src/org/mifos/doc-root/application/client/jsp/view_clientchargesdetail.jsp
===================================================================
--- src/org/mifos/doc-root/application/client/jsp/view_clientchargesdetail.jsp	(revision 12248)
+++ src/org/mifos/doc-root/application/client/jsp/view_clientchargesdetail.jsp	(working copy)
@@ -95,7 +95,7 @@
 								class="fontnormalbold"> <mifos:mifoslabel
 								name="client.ApplyTransaction" bundle="ClientUIResources" /> </span>
 							&nbsp;&nbsp;&nbsp;&nbsp; <html-el:link
-								href="applyPaymentAction.do?method=load&globalCustNum=${BusinessKey.customer.globalCustNum}&prdOfferingName=${BusinessKey.customer.displayName}&input=ViewClientCharges&globalAccountNum=${BusinessKey.globalAccountNum}&accountType=${BusinessKey.accountType.accountTypeId}&accountId=${BusinessKey.accountId}&randomNUm=${sessionScope.randomNUm}&currentFlowKey=${requestScope.currentFlowKey}">
+								href="applyPaymentAction.do?method=load&input=fee&globalCustNum=${BusinessKey.customer.globalCustNum}&prdOfferingName=${BusinessKey.customer.displayName}&input=ViewClientCharges&globalAccountNum=${BusinessKey.globalAccountNum}&accountType=${BusinessKey.accountType.accountTypeId}&accountId=${BusinessKey.accountId}&randomNUm=${sessionScope.randomNUm}&currentFlowKey=${requestScope.currentFlowKey}">
 								<mifos:mifoslabel name="client.apply_payment"
 									bundle="ClientUIResources" />
 							</html-el:link> <c:if
Index: src/org/mifos/framework/util/helpers/Constants.java
===================================================================
--- src/org/mifos/framework/util/helpers/Constants.java	(revision 12248)
+++ src/org/mifos/framework/util/helpers/Constants.java	(working copy)
@@ -123,4 +123,8 @@
 
 	public static final String INPUT="input";
 	public static final String ERROR_VERSION_MISMATCH="error.versionnodonotmatch";
+	
+	// added for defect 1590
+	public static final String LOAN="loan";
+	public static final String EMPTY_STRING="";
 }
Index: test/org/mifos/application/accounts/struts/action/TestApplyPaymentAction.java
===================================================================
--- test/org/mifos/application/accounts/struts/action/TestApplyPaymentAction.java	(revision 12248)
+++ test/org/mifos/application/accounts/struts/action/TestApplyPaymentAction.java	(working copy)
@@ -91,7 +91,7 @@
 		super.tearDown();
 	}
 	
-	public void testApplyPaymentLoad()throws Exception{
+	public void testApplyPaymentLoad_Loan()throws Exception{
 		request.setAttribute(Constants.CURRENTFLOWKEY, flowKey);
 		accountBO = createLoanAccount();
 		setRequestPathInfo("/applyPaymentAction");
@@ -107,6 +107,24 @@
 		assertEquals(actionForm.getAmount(),accountBO.getTotalPaymentDue());
 	}
 	
+	// added for defect 1590 [start]
+	public void testApplyPaymentLoad_Fees()throws Exception{
+		request.setAttribute(Constants.CURRENTFLOWKEY, flowKey);
+		accountBO = createLoanAccount();
+		setRequestPathInfo("/applyPaymentAction");
+		addRequestParameter("method", "load");
+		addRequestParameter("input","fee");
+		addRequestParameter("accountId",accountBO.getAccountId().toString());
+		addRequestParameter(Constants.CURRENTFLOWKEY, (String) request.getAttribute(Constants.CURRENTFLOWKEY));
+		actionPerform();
+		verifyForward(Constants.LOAD_SUCCESS);
+		verifyNoActionErrors();
+		assertNotNull(SessionUtils.getAttribute(MasterConstants.PAYMENT_TYPE,request));
+		AccountApplyPaymentActionForm actionForm = (AccountApplyPaymentActionForm)request.getSession().getAttribute("applyPaymentActionForm");
+		assertEquals(actionForm.getAmount(),accountBO.getTotalPaymentDue());
+	}
+	// added for defect 1590 [end]
+	
 	public void testApplyPaymentPreview(){
 		request.setAttribute(Constants.CURRENTFLOWKEY, flowKey);
 		setRequestPathInfo("/applyPaymentAction");
