package org.mifos.application.servicefacade;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import org.mifos.clientportfolio.newloan.applicationservice.CreateGroupLoanAccount;
import org.mifos.clientportfolio.newloan.applicationservice.CreateLoanAccount;
import org.mifos.clientportfolio.newloan.applicationservice.LoanAccountCashFlow;
import org.mifos.dto.domain.GroupIndividualLoanDto;
import org.mifos.dto.domain.LoanPaymentDto;
import org.mifos.dto.screen.GroupLoanMemberAdjustmentDto;
import org.mifos.dto.screen.GroupLoanScheduleDto;
import org.mifos.dto.screen.LoanCreationResultDto;
import org.mifos.dto.screen.LoanInformationDto;
import org.mifos.platform.questionnaire.service.QuestionGroupDetail;
public interface GroupLoanAccountServiceFacade {
LoanCreationResultDto createGroupLoan(CreateGroupLoanAccount createGroupLoanAccount,List<QuestionGroupDetail> questionGroups, LoanAccountCashFlow loanAccountCashFlow);
LoanCreationResultDto createBackdatedGroupLoan(CreateGroupLoanAccount createGroupLoanAccount, Map<Integer, List<LoanPaymentDto>> backdatedLoanPayments,
List<QuestionGroupDetail> questionGroups, LoanAccountCashFlow loanAccountCashFlow);
Integer getMemberClientId(String globalCustNum);
int getNumberOfMemberAccounts(Integer accountId);
List<Integer> getListOfMemberAccountIds(Integer parentAccountId);
List<String> getListOfMemberGlobalAccountNumbers(Integer parentAccountId);
List<GroupIndividualLoanDto> getMemberLoansAndDefaultPayments(Integer parentAccountId, BigDecimal amount);
LoanInformationDto retrieveLoanInformation(String globalAccountNum);
List<GroupLoanMemberAdjustmentDto> retrieveMemberAdjustmentDtos(Integer parentAccountId, Integer parentPaymentId, BigDecimal newAmount);
GroupLoanScheduleDto getGroupLoanScheduleDto(CreateGroupLoanAccount createGroupLoanAccount, List<CreateLoanAccount> memberDetails);
void fixMemberAndParentInstallmentDetails(Integer loanId);
}