doc.getCstmrCdtTrfInitn().getGrpHdr().setCtrlSum(SepaUtil.sumBtgValue(sepaParams, maxIndex));
//Payment Information
ArrayList<PaymentInstructionInformationSCT> pmtInfs = (ArrayList<PaymentInstructionInformationSCT>) doc.getCstmrCdtTrfInitn().getPmtInf();
PaymentInstructionInformationSCT pmtInf = new PaymentInstructionInformationSCT();
pmtInfs.add(pmtInf);
pmtInf.setPmtInfId(pmtInfId != null && pmtInfId.length() > 0 ? pmtInfId : sepaId);
pmtInf.setPmtMtd(PaymentMethodSCTCode.TRF);
pmtInf.setNbOfTxs(String.valueOf(maxIndex != null ? maxIndex + 1 : 1));
pmtInf.setCtrlSum(SepaUtil.sumBtgValue(sepaParams, maxIndex));
pmtInf.setPmtTpInf(new PaymentTypeInformationSCT1());
pmtInf.getPmtTpInf().setSvcLvl(new ServiceLevelSEPA());
pmtInf.getPmtTpInf().getSvcLvl().setCd("SEPA");
String date = sepaParams.getProperty("date");
if(date == null) date = SepaUtil.DATE_UNDEFINED;
pmtInf.setReqdExctnDt(SepaUtil.createCalendar(date));
pmtInf.setDbtr(new PartyIdentificationSEPA2());
pmtInf.setDbtrAcct(new CashAccountSEPA1());
pmtInf.setDbtrAgt(new BranchAndFinancialInstitutionIdentificationSEPA3());
//Payment Information - Debtor
pmtInf.getDbtr().setNm(sepaParams.getProperty("src.name"));
//Payment Information - DebtorAccount
pmtInf.getDbtrAcct().setId(new AccountIdentificationSEPA());
pmtInf.getDbtrAcct().getId().setIBAN(sepaParams.getProperty("src.iban"));
//Payment Information - DebtorAgent
pmtInf.getDbtrAgt().setFinInstnId(new FinancialInstitutionIdentificationSEPA3());
String srcBic = sepaParams.getProperty("src.bic");
if (srcBic != null && srcBic.length() > 0) // BIC ist inzwischen optional
{
pmtInf.getDbtrAgt().getFinInstnId().setBIC(srcBic);
}
else
{
pmtInf.getDbtrAgt().getFinInstnId().setOthr(new OthrIdentification());
pmtInf.getDbtrAgt().getFinInstnId().getOthr().setId(OthrIdentificationCode.NOTPROVIDED);
}
//Payment Information - ChargeBearer
pmtInf.setChrgBr(ChargeBearerTypeSEPACode.SLEV);
//Payment Information - Credit Transfer Transaction Information
ArrayList<CreditTransferTransactionInformationSCT> cdtTrxTxInfs = (ArrayList<CreditTransferTransactionInformationSCT>) pmtInf.getCdtTrfTxInf();
if (maxIndex != null)
{
for (int tnr = 0; tnr <= maxIndex; tnr++)
{
cdtTrxTxInfs.add(createCreditTransferTransactionInformationSCT(sepaParams, tnr));
}
}
else
{
cdtTrxTxInfs.add(createCreditTransferTransactionInformationSCT(sepaParams, null));
}
String batch = SepaUtil.getProperty(sepaParams,"batchbook",null);
if (batch != null)
pmtInf.setBtchBookg(batch.equals("1"));
ObjectFactory of = new ObjectFactory();
this.marshal(of.createDocument(doc), os, validate);
}