Skip to content

Instantly share code, notes, and snippets.

@wouterla
Created October 3, 2015 12:45
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save wouterla/5952cd86f3ba5f1bfab7 to your computer and use it in GitHub Desktop.
Save wouterla/5952cd86f3ba5f1bfab7 to your computer and use it in GitHub Desktop.
package com.example.confirmationletter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.webflow.execution.RequestContext;
import com.example.dao.CurrencyDao;
import com.example.domain.AmountAndRecordsPerBank;
import com.example.domain.BatchTotal;
import com.example.domain.Client;
import com.example.domain.ConfirmationLetter;
import com.example.domain.Currency;
import com.example.domain.HashBatchRecordsBalance;
import com.example.domain.Record;
import com.example.record.command.FileUploadCommand;
import com.example.record.domain.TempRecord;
import com.example.record.parser.FileExtension;
import com.example.record.service.impl.Constants;
public class ConfirmationLetterGenerator {
@SuppressWarnings("unused")
private static Log logger = LogFactory.getLog(ConfirmationLetterGenerator.class);
private static final String COLLECTIVE = "collectief";
private String crediting;
private String debiting;
private String debit;
private String credit;
private String type;
private LetterSelector letterSelector;
private CurrencyDao currencyDao;
public CurrencyDao getCurrencyDao() {
return currencyDao;
}
public void setCurrencyDao(CurrencyDao currencyDao) {
this.currencyDao = currencyDao;
}
public OurOwnByteArrayOutputStream letter(RequestContext context,
FileUploadCommand fileUploadCommand, Client client,
HashBatchRecordsBalance hashBatchRecordsBalance, String branchName,
List<AmountAndRecordsPerBank> bankMap,
List<com.example.record.domain.FaultRecord> faultyRecords,
FileExtension extension, List<Record> records,
List<TempRecord> faultyAccountNumberRecordList,
List<TempRecord> sansDuplicateFaultRecordsList
// ,
// List<BigDecimal> retrievedAmountFL,
// List<BigDecimal> retrievedAmountEUR,
// List<BigDecimal> retrievedAmountUSD
) {
ConfirmationLetter letter = new ConfirmationLetter();
letter.setCurrency(records.get(0).getCurrency());
letter.setExtension(extension);
letter.setHashTotalCredit(hashBatchRecordsBalance.getHashTotalCredit()
.toString());
letter.setHashTotalDebit(hashBatchRecordsBalance.getHashTotalDebit()
.toString());
letter.setBatchTotalDebit(debitBatchTotal(
hashBatchRecordsBalance.getBatchTotals(), client).toString());
letter.setBatchTotalCredit(creditBatchTotal(
hashBatchRecordsBalance.getBatchTotals(), client).toString());
letter.setTotalProcessedRecords(hashBatchRecordsBalance
.getRecordsTotal().toString());
if (fileUploadCommand.getFee().equalsIgnoreCase(Constants.YES)) {
letter.setTransactionCost(hashBatchRecordsBalance.getTotalFee()
.toString());
} else
letter.setTransactionCost("");
letter.setTransferType(hashBatchRecordsBalance.getCollectionType());
// // logger.debug("letter method, bankMap: "+bankMap.size());
letter.setBanks(bankMap);
// uncommented this line
letter.setCreditingErrors(faultyRecords);
letter.setClient(client);
letter.setBranchName(branchName);
Map<String, BigDecimal> retrievedAmounts = new HashMap<String, BigDecimal>();
retrievedAmounts = calculateRetrieveAmounts(records, faultyRecords,
client, extension, faultyAccountNumberRecordList,
sansDuplicateFaultRecordsList);
letter.setRetrievedAmountEur(retrievedAmounts
.get(Constants.CURRENCY_EURO));
letter.setRetrievedAmountFL(retrievedAmounts
.get(Constants.CURRENCY_FL));
letter.setRetrievedAmountUsd(retrievedAmounts
.get(Constants.CURRENCY_FL));
// System.out.println("TRACING AMOUNT ["+letter.getRetrievedAmountFL()+"]");
// letter.setRetrievedAmountFLDBF(retrievedAmounts.get("FLDBF"));
// letter.setRetrievedAmountUSDDBF(retrievedAmounts.get("USDDBF"));
// letter.setRetrievedAmountEURDBF(retrievedAmounts.get("EURDBF"));
letter.setTotalRetrievedRecords(fileUploadCommand.getTotalRecords());
OurOwnByteArrayOutputStream arrayOutputStream = letterSelector
.generateLetter(client.getCreditDebit(), letter);
context.getConversationScope().asMap().put("dsbByteArrayOutputStream",
arrayOutputStream);
return arrayOutputStream;
}
// Calculate sum amount from faultyAccountnumber list
private Map<String, BigDecimal> calculateAmountsFaultyAccountNumber(
List<TempRecord> faultyAccountNumberRecordList, Client client) {
Map<String, BigDecimal> retrievedAmountsFaultyAccountNumber = new HashMap<String, BigDecimal>();
BigDecimal faultyAccRecordAmountCreditFL = new BigDecimal(0);
BigDecimal faultyAccRecordAmountCreditUSD = new BigDecimal(0);
BigDecimal faultyAccRecordAmountCreditEUR = new BigDecimal(0);
BigDecimal faultyAccRecordAmountDebitFL = new BigDecimal(0);
BigDecimal faultyAccRecordAmountDebitUSD = new BigDecimal(0);
BigDecimal faultyAccRecordAmountDebitEUR = new BigDecimal(0);
for (TempRecord faultyAccountNumberRecord : faultyAccountNumberRecordList) {
// // logger.debug("faultyAccountNumberRecord: "+
// faultyAccountNumberRecord);
// FL
if (StringUtils.isBlank(faultyAccountNumberRecord.getSign())) {
faultyAccountNumberRecord.setSign(client.getCreditDebit());
}
if (faultyAccountNumberRecord.getCurrencycode() == null) {
String currencyId = currencyDao.retrieveCurrencyDefault(client
.getProfile());
Currency currency = currencyDao
.retrieveCurrencyOnId(new Integer(currencyId));
faultyAccountNumberRecord.setCurrencycode(currency.getCode()
.toString());
}
if (faultyAccountNumberRecord.getCurrencycode().equals(
Constants.FL_CURRENCY_CODE)
|| faultyAccountNumberRecord.getCurrencycode().equals(
Constants.FL_CURRENCY_CODE_FOR_WEIRD_BANK)) {
if (faultyAccountNumberRecord.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
faultyAccRecordAmountDebitFL = new BigDecimal(
faultyAccountNumberRecord.getAmount())
.add(faultyAccRecordAmountDebitFL);
} else {
faultyAccRecordAmountCreditFL = new BigDecimal(
faultyAccountNumberRecord.getAmount())
.add(faultyAccRecordAmountCreditFL);
}
}
if (faultyAccountNumberRecord.getCurrencycode().equals(
Constants.USD_CURRENCY_CODE)) {
if (faultyAccountNumberRecord.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
faultyAccRecordAmountDebitUSD = new BigDecimal(
faultyAccountNumberRecord.getAmount())
.add(faultyAccRecordAmountDebitUSD);
} else {
faultyAccRecordAmountCreditUSD = new BigDecimal(
faultyAccountNumberRecord.getAmount())
.add(faultyAccRecordAmountCreditUSD);
}
}
if (faultyAccountNumberRecord.getCurrencycode().equals(
Constants.EUR_CURRENCY_CODE)) {
if (faultyAccountNumberRecord.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
faultyAccRecordAmountDebitEUR = new BigDecimal(
faultyAccountNumberRecord.getAmount())
.add(faultyAccRecordAmountDebitEUR);
} else {
faultyAccRecordAmountCreditEUR = new BigDecimal(
faultyAccountNumberRecord.getAmount())
.add(faultyAccRecordAmountCreditEUR);
}
}
retrievedAmountsFaultyAccountNumber.put("FaultyAccDebitFL",
faultyAccRecordAmountDebitFL);
retrievedAmountsFaultyAccountNumber.put("FaultyAccDebitUSD",
faultyAccRecordAmountDebitUSD);
retrievedAmountsFaultyAccountNumber.put("FaultyAccDebitEUR",
faultyAccRecordAmountDebitEUR);
retrievedAmountsFaultyAccountNumber.put("FaultyAccCreditFL",
faultyAccRecordAmountCreditFL);
retrievedAmountsFaultyAccountNumber.put("FaultyAccCreditUSD",
faultyAccRecordAmountCreditUSD);
retrievedAmountsFaultyAccountNumber.put("FaultyAccCreditEUR",
faultyAccRecordAmountCreditEUR);
}
return retrievedAmountsFaultyAccountNumber;
}
private Map<String, BigDecimal> calculateRetrieveAmounts(
List<Record> records,
List<com.example.record.domain.FaultRecord> faultyRecords,
Client client, FileExtension extension,
List<TempRecord> faultyAccountNumberRecordList,
List<TempRecord> sansDuplicateFaultRecordsList) {
Map<String, BigDecimal> retrievedAmounts = new HashMap<String, BigDecimal>();
BigDecimal recordAmountFL = new BigDecimal(0);
BigDecimal recordAmountUSD = new BigDecimal(0);
BigDecimal recordAmountEUR = new BigDecimal(0);
BigDecimal recordAmountDebitFL = new BigDecimal(0);
BigDecimal recordAmountDebitEUR = new BigDecimal(0);
BigDecimal recordAmountDebitUSD = new BigDecimal(0);
BigDecimal recordAmountCreditFL = new BigDecimal(0);
BigDecimal recordAmountCreditEUR = new BigDecimal(0);
BigDecimal recordAmountCreditUSD = new BigDecimal(0);
BigDecimal amountSansDebitFL = new BigDecimal(0);
BigDecimal amountSansDebitUSD = new BigDecimal(0);
BigDecimal amountSansDebitEUR = new BigDecimal(0);
BigDecimal amountSansCreditFL = new BigDecimal(0);
BigDecimal amountSansCreditUSD = new BigDecimal(0);
BigDecimal amountSansCreditEUR = new BigDecimal(0);
BigDecimal totalDebitFL = new BigDecimal(0);
BigDecimal totalDebitUSD = new BigDecimal(0);
BigDecimal totalDebitEUR = new BigDecimal(0);
BigDecimal totalCreditFL = new BigDecimal(0);
BigDecimal totalCreditUSD = new BigDecimal(0);
BigDecimal totalCreditEUR = new BigDecimal(0);
if (client.getCounterTransfer().equalsIgnoreCase(Constants.TRUE)) {
for (Record record : records) {
if (record.getFeeRecord() != 1) {
if ((record.getCurrency().getCode().equals(
Constants.FL_CURRENCY_CODE) || record
.getCurrency().getCode().equals(
Constants.FL_CURRENCY_CODE_FOR_WEIRD_BANK))
&& record.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
recordAmountFL = record.getAmount().add(
recordAmountFL);
// system.out.println("recordAmountFL: ["+ recordAmountFL + "]");
}
if (record.getCurrency().getCode().equals(
Constants.EUR_CURRENCY_CODE)
&& record.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
recordAmountEUR = record.getAmount().add(
recordAmountEUR);
// system.out.println("recordAmountEUR: ["+ recordAmountEUR + "]");
}
if (record.getCurrency().getCode().equals(
Constants.USD_CURRENCY_CODE)
&& record.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
recordAmountUSD = record.getAmount().add(
recordAmountUSD);
// system.out.println("recordAmountUSD: ["+ recordAmountUSD + "]");
}
}
retrievedAmounts.put(Constants.CURRENCY_EURO, recordAmountEUR);
retrievedAmounts.put(Constants.CURRENCY_FL, recordAmountUSD);
retrievedAmounts.put(Constants.CURRENCY_FL, recordAmountFL);
}
}
// Not Balanced
else {
for (Record record : records) {
logger.debug("COUNTERTRANSFER ["+record.getIsCounterTransferRecord()+"] FEERECORD ["+record.getFeeRecord()+"]");
if (record.getIsCounterTransferRecord().compareTo(new Integer(0))==0
&& record.getFeeRecord().compareTo(new Integer(0))==0) {
if ((record.getCurrency().getCode().equals(
Constants.FL_CURRENCY_CODE) || record
.getCurrency().getCode().equals(
Constants.FL_CURRENCY_CODE_FOR_WEIRD_BANK))) {
// System.out.println("record to string: ["+record.toString()+"]");
if (record.getSign().equalsIgnoreCase(Constants.DEBIT)) {
// System.out.println("record.getamount DEBIT = ["+ record.getAmount() + "]");
// system.out.println("recordAmountDebitFL 1 = "+ recordAmountDebitFL);
recordAmountDebitFL = record.getAmount().add(
recordAmountDebitFL);
// System.out.println("recordAmountDebitFL: ["+recordAmountDebitFL+"]");
}
if (record.getSign().equalsIgnoreCase(Constants.CREDIT)) {
// System.out.println("record.getamount CREDIT = ["+record.getAmount()+"]");
// system.out.println("recordAmountCreditFL 1 = ["+recordAmountCreditFL+"]");
recordAmountCreditFL = record.getAmount().add(
recordAmountCreditFL);
// System.out.println("recordAmountCreditFL: ["+recordAmountCreditFL+"]");
}
if (record.getCurrency().getCode().equals(
Constants.EUR_CURRENCY_CODE)) {
if (record.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
recordAmountDebitEUR = record.getAmount().add(
recordAmountDebitEUR);
// system.out.println("recordAmountDebitEUR: ["+recordAmountDebitEUR+"]");
}
if (record.getSign().equalsIgnoreCase(
Constants.CREDIT)) {
recordAmountCreditEUR = record.getAmount().add(
recordAmountCreditEUR);
// system.out.println("recordAmountCreditEUR: ["+recordAmountCreditEUR+"]");
}
}
}
}
if (record.getCurrency().getCode().equals(
Constants.USD_CURRENCY_CODE)) {
if (record.getSign().equalsIgnoreCase(Constants.DEBIT)) {
recordAmountDebitUSD = record.getAmount().add(
recordAmountDebitUSD);
// system.out.println("recordAmountDebitUSD: ["+recordAmountDebitUSD+"]");
}
if (record.getSign().equalsIgnoreCase(Constants.CREDIT)) {
recordAmountCreditUSD = record.getAmount().add(
recordAmountCreditUSD);
// system.out.println("recordAmountCreditUSD: ["+recordAmountCreditUSD+"]");
}
}
}
// Sansduplicate
for (TempRecord sansDupRec : sansDuplicateFaultRecordsList) {
// logger.debug("sansDupRec: "+sansDupRec);
String currencyCode = sansDupRec.getCurrencycode();
if (sansDupRec.getSign() == null) {
String sign = client.getCreditDebit();
sansDupRec.setSign(sign);
}
if (currencyCode == null) {
String currencyId = currencyDao
.retrieveCurrencyDefault(client.getProfile());
Currency currency = currencyDao
.retrieveCurrencyOnId(new Integer(currencyId));
sansDupRec.setCurrencycode(currency.getCode().toString());
} else {
if (currencyCode.equals(Constants.FL_CURRENCY_CODE)
|| currencyCode
.equals(Constants.FL_CURRENCY_CODE_FOR_WEIRD_BANK)) {
if (sansDupRec.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
amountSansDebitFL = new BigDecimal(sansDupRec
.getAmount()).add(amountSansDebitFL);
} else {
amountSansCreditFL = new BigDecimal(sansDupRec
.getAmount()).add(amountSansCreditFL);
}
}
if (currencyCode.equals(Constants.USD_CURRENCY_CODE)) {
if (sansDupRec.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
amountSansDebitUSD = new BigDecimal(sansDupRec
.getAmount()).add(amountSansDebitUSD);
} else {
amountSansCreditUSD = new BigDecimal(sansDupRec
.getAmount()).add(amountSansCreditUSD);
}
}
if (currencyCode.equals(Constants.EUR_CURRENCY_CODE)) {
if (sansDupRec.getSign().equalsIgnoreCase(
Constants.DEBIT)) {
amountSansDebitEUR = new BigDecimal(sansDupRec
.getAmount()).add(amountSansDebitEUR);
} else {
amountSansCreditEUR = new BigDecimal(sansDupRec
.getAmount()).add(amountSansCreditEUR);
}
}
}
}
Map<String, BigDecimal> retrievedAccountNumberAmounts = calculateAmountsFaultyAccountNumber(
faultyAccountNumberRecordList, client);
// logger.info("Before total debit FL");
// logger.info("amountSansDebitFL "+amountSansDebitFL);
if (retrievedAccountNumberAmounts.get("FaultyAccDebitFL") != null
&& amountSansDebitFL != null) {
// logger.info("retrievedAccountNumberAmounts.get(FaultyAccDebitFL) "+retrievedAccountNumberAmounts.get("FaultyAccDebitFL"));
totalDebitFL = recordAmountDebitFL.add(amountSansDebitFL)
.subtract(
retrievedAccountNumberAmounts
.get("FaultyAccDebitFL"));
} else if (amountSansDebitFL != null) {
totalDebitFL = recordAmountDebitFL.add(amountSansDebitFL);
} else {
totalDebitFL = recordAmountDebitFL;
}
// logger.info("totalDebitFL "+totalDebitFL);
if (retrievedAccountNumberAmounts.get("FaultyAccCreditFL") != null
&& amountSansCreditFL != null) {
// logger.debug("retrievedAccountNumberAmounts.get(FaultyAccCreditFL):"+retrievedAccountNumberAmounts.get("FaultyAccCreditFL"));
totalCreditFL = recordAmountCreditFL.add(amountSansCreditFL)
.subtract(
retrievedAccountNumberAmounts
.get("FaultyAccCreditFL"));
} else if (amountSansCreditFL != null) {
totalCreditFL = recordAmountCreditFL.add(amountSansCreditFL);
} else {
totalCreditFL = recordAmountCreditFL;
}
// logger.info("totalCreditFL: "+totalCreditFL);
if (retrievedAccountNumberAmounts.get("FaultyAccDebitUSD") != null
&& amountSansDebitUSD != null) {
// logger.info("retrievedAccountNumberAmounts.get(FaultyAccDebitUSD) "+retrievedAccountNumberAmounts.get("FaultyAccDebitUSD"));
totalDebitUSD = recordAmountDebitUSD.add(amountSansDebitUSD)
.subtract(
retrievedAccountNumberAmounts
.get("FaultyAccDebitUSD"));
} else if (amountSansDebitUSD != null) {
totalDebitUSD = recordAmountDebitUSD.add(amountSansDebitUSD);
} else {
totalDebitUSD = recordAmountDebitUSD;
}
// logger.info("totalDebitUSD "+totalDebitUSD);
if (retrievedAccountNumberAmounts.get("FaultyAccCreditUSD") != null
&& amountSansCreditUSD != null) {
// logger.debug("retrievedAccountNumberAmounts.get(FaultyAccCreditUSD):"+retrievedAccountNumberAmounts.get("FaultyAccCreditUSD"));
totalCreditUSD = recordAmountCreditUSD.add(amountSansCreditUSD)
.subtract(
retrievedAccountNumberAmounts
.get("FaultyAccCreditUSD"));
} else if (amountSansCreditUSD != null) {
totalCreditUSD = recordAmountCreditUSD.add(amountSansCreditUSD);
} else {
totalCreditUSD = recordAmountCreditUSD;
}
// logger.info("totalCreditUSD: "+totalCreditUSD);
if (retrievedAccountNumberAmounts.get("FaultyAccDebitEUR") != null
&& amountSansDebitEUR != null) {
// logger.info("retrievedAccountNumberAmounts.get(FaultyAccDebitEUR) "+retrievedAccountNumberAmounts.get("FaultyAccDebitEUR"));
totalDebitEUR = recordAmountDebitEUR.add(amountSansDebitEUR)
.subtract(
retrievedAccountNumberAmounts
.get("FaultyAccDebitEUR"));
} else if (amountSansDebitEUR != null) {
totalDebitEUR = recordAmountDebitEUR.add(amountSansDebitEUR);
} else {
totalDebitEUR = recordAmountDebitEUR;
}
// logger.info("totalDebitEUR "+totalDebitEUR);
if (retrievedAccountNumberAmounts.get("FaultyAccCreditEUR") != null
&& amountSansCreditEUR != null) {
// logger.debug("retrievedAccountNumberAmounts.get(FaultyAccCreditEUR):"+retrievedAccountNumberAmounts.get("FaultyAccCreditEUR"));
totalCreditEUR = recordAmountCreditEUR.add(amountSansCreditEUR)
.subtract(
retrievedAccountNumberAmounts
.get("FaultyAccCreditEUR"));
} else if (amountSansCreditEUR != null) {
totalCreditEUR = recordAmountCreditEUR.add(amountSansCreditEUR);
} else {
totalCreditEUR = recordAmountCreditEUR;
}
// logger.info("totalCreditEUR: "+totalCreditEUR);
recordAmountFL = totalDebitFL.subtract(totalCreditFL).abs();
recordAmountUSD = totalDebitUSD.subtract(totalCreditUSD).abs();
recordAmountEUR = totalDebitEUR.subtract(totalCreditEUR).abs();
retrievedAmounts.put(Constants.CURRENCY_EURO, recordAmountEUR);
retrievedAmounts.put(Constants.CURRENCY_FL, recordAmountUSD);
retrievedAmounts.put(Constants.CURRENCY_FL, recordAmountFL);
}
return retrievedAmounts;
}
private BigDecimal creditBatchTotal(Map<Integer, BatchTotal> batchTotals,
Client client) {
Double sum = new Double(0);
Iterator<BatchTotal> itr = batchTotals.values().iterator();
while (itr.hasNext()) {
BatchTotal total = itr.next();
sum = sum + total.getCreditValue().doubleValue();
}
Double d = sum / new Double(client.getAmountDivider());
return new BigDecimal(d);
}
private BigDecimal debitBatchTotal(Map<Integer, BatchTotal> batchTotals,
Client client) {
Double sum = new Double(0);
Iterator<BatchTotal> itr = batchTotals.values().iterator();
while (itr.hasNext()) {
BatchTotal total = itr.next();
sum = sum + total.getCreditCounterValueForDebit().doubleValue();
}
Double d = sum / new Double(client.getAmountDivider());
return new BigDecimal(d);
}
private List<AmountAndRecordsPerBank> amountAndRecords(
List<Record> records, String transactionType) {
List<AmountAndRecordsPerBank> list = new ArrayList<AmountAndRecordsPerBank>();
String typeOfTransaction = transactionType.equalsIgnoreCase(crediting) ? crediting
: debiting;
type = typeOfTransaction.equalsIgnoreCase(crediting) ? credit : debit;
if (transactionType.equalsIgnoreCase(typeOfTransaction)) {
for (Record record : records) {
getAmountAndRecords(record, list, transactionType);
}
}
return list;
}
private List<AmountAndRecordsPerBank> getAmountAndRecords(Record record,
List<AmountAndRecordsPerBank> list, String transactionType) {
Map<String, String> map = new HashMap<String, String>();
if (record.getFeeRecord().compareTo(0) == 0
&& !map.containsKey(record.getBeneficiaryName())) {
if (transactionType.equalsIgnoreCase(Constants.CREDITING)) {
if (record.getBeneficiaryName() != null
&& !record.getBeneficiaryName().equalsIgnoreCase(
Constants.RBTT_BANK_ALTERNATE)) {
Boolean newList = true;
if (list.size() == 0
&& record.getSign().equalsIgnoreCase(type)) {
// logger.info("bank gegevens: "+record.getSign()+" : "+record.getBank().getName()+" : "+record.getBeneficiaryName());
AmountAndRecordsPerBank aARPB = new AmountAndRecordsPerBank();
aARPB.setBankName(record.getBank().getName());
aARPB.setTotalRecord(1);
aARPB.setAmount(record.getAmount());
aARPB.setCurrencyType(record.getCurrency()
.getCurrencyType());
aARPB.setAccountNumber(record
.getBeneficiaryAccountNumber());
list.add(aARPB);
newList = false;
}
if (newList && record.getSign().equalsIgnoreCase(type)) {
// logger.info("bank gegevens: "+record.getSign()+" : "+record.getBank().getName()+" : "+record.getBeneficiaryName());
Boolean newRecord = true;
for (AmountAndRecordsPerBank object : list) {
if (object.getBankName().equalsIgnoreCase(
record.getBank().getName())
&& object.getCurrencyType()
.equalsIgnoreCase(
record.getCurrency()
.getCurrencyType())) {
object.setAmount(object.getAmount().add(
record.getAmount()));
object
.setTotalRecord(object.getTotalRecord() + 1);
newRecord = false;
}
}
if (newRecord) {
AmountAndRecordsPerBank aARPB = new AmountAndRecordsPerBank();
aARPB.setBankName(record.getBank().getName());
aARPB.setTotalRecord(1);
aARPB.setAmount(record.getAmount());
aARPB.setCurrencyType(record.getCurrency()
.getCurrencyType());
aARPB.setAccountNumber(record
.getBeneficiaryAccountNumber());
list.add(aARPB);
}
}
}
}
// del begin
if (transactionType.equalsIgnoreCase(Constants.DEBITING)) {
if (record.getBeneficiaryName() == null) {
Boolean newList = true;
if (list.size() == 0
&& record.getSign().equalsIgnoreCase(type)) {
// logger.info("bank gegevens: "+record.getSign()+" : "+record.getBank().getName()+" : "+record.getBeneficiaryName());
AmountAndRecordsPerBank aARPB = new AmountAndRecordsPerBank();
aARPB.setBankName(record.getBank().getName());
aARPB.setTotalRecord(1);
aARPB.setAmount(record.getAmount());
aARPB.setCurrencyType(record.getCurrency()
.getCurrencyType());
aARPB.setAccountNumber(record
.getBeneficiaryAccountNumber());
list.add(aARPB);
newList = false;
}
if (newList && record.getSign().equalsIgnoreCase(type)) {
// logger.info("bank gegevens: "+record.getSign()+" : "+record.getBank().getName()+" : "+record.getBeneficiaryName());
Boolean newRecord = true;
for (AmountAndRecordsPerBank object : list) {
if (object.getBankName().equalsIgnoreCase(
record.getBank().getName())
&& object.getCurrencyType()
.equalsIgnoreCase(
record.getCurrency()
.getCurrencyType())) {
object.setAmount(object.getAmount().add(
record.getAmount()));
object
.setTotalRecord(object.getTotalRecord() + 1);
newRecord = false;
}
}
if (newRecord) {
AmountAndRecordsPerBank aARPB = new AmountAndRecordsPerBank();
aARPB.setBankName(record.getBank().getName());
aARPB.setTotalRecord(1);
aARPB.setAmount(record.getAmount());
aARPB.setCurrencyType(record.getCurrency()
.getCurrencyType());
aARPB.setAccountNumber(record
.getBeneficiaryAccountNumber());
list.add(aARPB);
}
}
}
}
// del end
}
return list;
}
/*
*
* Getters and setters
*/
public void setCrediting(String crediting) {
this.crediting = crediting;
}
public void setDebiting(String debiting) {
this.debiting = debiting;
}
public void setDebit(String debit) {
this.debit = debit;
}
public void setCredit(String credit) {
this.credit = credit;
}
public void setLetterSelector(LetterSelector letterSelector) {
this.letterSelector = letterSelector;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment