/** * The sum of all CORP accounting lines on the document * * @see * org.kuali.kfs.sys.batch.service.PaymentSourceToExtractService#getPaymentAmount(org.kuali.kfs.sys.document.PaymentSource) */ @Override public KualiDecimal getPaymentAmount(TEMReimbursementDocument document) { KualiDecimal amount = KualiDecimal.ZERO; for (TemSourceAccountingLine line : (List<TemSourceAccountingLine>) document.getSourceAccountingLines()) { if (StringUtils.equals(line.getCardType(), TemConstants.TRAVEL_TYPE_CORP)) { amount = amount.add(line.getAmount()); } } return amount; }
/** * Builds the PaymentDetail for the given reimbursable travel & entertainment document * * @param document the reimbursable travel & entertainment document to create a payment for * @param processRunDate the date when the extraction is occurring * @return a PaymentDetail to add to the PaymentGroup */ protected PaymentDetail buildPaymentDetail( TEMReimbursementDocument document, Date processRunDate) { if (LOG.isDebugEnabled()) { LOG.debug("buildPaymentDetail() started"); } PaymentDetail pd = new PaymentDetail(); if (StringUtils.isNotEmpty(document.getDocumentHeader().getOrganizationDocumentNumber())) { pd.setOrganizationDocNbr(document.getDocumentHeader().getOrganizationDocumentNumber()); } pd.setCustPaymentDocNbr(document.getDocumentNumber()); pd.setInvoiceDate(new java.sql.Date(processRunDate.getTime())); pd.setOrigInvoiceAmount(getPaymentAmount(document)); pd.setInvTotDiscountAmount(KualiDecimal.ZERO); pd.setInvTotOtherCreditAmount(KualiDecimal.ZERO); pd.setInvTotOtherDebitAmount(KualiDecimal.ZERO); pd.setInvTotShipAmount(KualiDecimal.ZERO); pd.setNetPaymentAmount(getPaymentAmount(document)); pd.setPrimaryCancelledPayment(Boolean.FALSE); pd.setFinancialDocumentTypeCode(getAchCheckDocumentType(document)); pd.setFinancialSystemOriginCode(KFSConstants.ORIGIN_CODE_KUALI); pd.setPurchaseOrderNbr(document.getTravelDocumentIdentifier()); pd.setOrganizationDocNbr(document.getTravelDocumentIdentifier()); int line = 0; PaymentNoteText pnt = new PaymentNoteText(); pnt.setCustomerNoteLineNbr(new KualiInteger(line++)); final String travelerId = (!ObjectUtils.isNull(document.getTemProfile()) ? (!ObjectUtils.isNull(document.getTemProfile().getPrincipal()) ? document.getTemProfile().getPrincipal().getPrincipalName() : document.getTemProfile().getCustomerNumber()) : document.getDocumentNumber()); // they got this far without a payee id? that really // probably shouldn't happen pnt.setCustomerNoteText( "Info: " + travelerId + " " + document.getTemProfile().getPhoneNumber()); pd.addNote(pnt); final String text = document.getDocumentHeader().getDocumentDescription(); if (!StringUtils.isBlank(text)) { pnt = getPaymentSourceHelperService().buildNoteForCheckStubText(text, line); if (LOG.isDebugEnabled()) { LOG.debug("Creating check stub text note: " + pnt.getCustomerNoteText()); } pd.addNote(pnt); } // Handle accounts, but only corporate card accounting lines List<TemSourceAccountingLine> corporateCardLines = new ArrayList<TemSourceAccountingLine>(); for (TemSourceAccountingLine accountingLine : (List<TemSourceAccountingLine>) document.getSourceAccountingLines()) { if (StringUtils.equals(TemConstants.TRAVEL_TYPE_CORP, accountingLine.getCardType())) { corporateCardLines.add(accountingLine); } } final List<PaymentAccountDetail> paymentAccounts = buildPaymentAccountDetails(corporateCardLines); for (PaymentAccountDetail pad : paymentAccounts) { pd.addAccountDetail(pad); } return pd; }