/** * Finds the vendor number from the first historical travel expense associated with the given * document * * @param document a document to find a corporate card vendor for * @return the id of the found vendor or null if nothing was found */ protected String findCorporateCardVendorNumber(TEMReimbursementDocument document) { final CreditCardAgency creditCardAgency = getCorporateCreditCardAgency(document); if (!ObjectUtils.isNull(creditCardAgency)) { return creditCardAgency.getVendorNumber(); } return null; }
/** * @see * org.kuali.kfs.module.tem.batch.service.CreditCardDataImportService#validateAndSetCreditCardAgency(org.kuali.kfs.module.tem.businessobject.CreditCardStagingData) */ @Override public boolean validateAndSetCreditCardAgency(CreditCardStagingData creditCardData) { CreditCardAgency ccAgency = creditCardAgencyService.getCreditCardAgencyByCode( creditCardData.getCreditCardOrAgencyCode()); if (ObjectUtils.isNull(ccAgency)) { LOG.error( "Mandatory Field Credit Card Or Agency Code is invalid: " + creditCardData.getCreditCardOrAgencyCode()); creditCardData.setErrorCode(CreditCardStagingDataErrorCodes.CREDIT_CARD_INVALID_CC_AGENCY); return false; } creditCardData.setCreditCardAgency(ccAgency); creditCardData.setCreditCardOrAgencyCode(ccAgency.getCreditCardOrAgencyCode()); return true; }
/** * Finds the vendor for the corporate card used on the given document * * @param document the document to find a corporate card vendor for * @return the found vendor or null if a vendor could not be found */ protected VendorDetail getCorporateCardVendor(CreditCardAgency creditCardAgency) { if (!ObjectUtils.isNull(creditCardAgency)) { final String vendorNumber = creditCardAgency.getVendorNumber(); if (!StringUtils.isBlank(vendorNumber)) { return getVendorService().getByVendorNumber(vendorNumber); } } return null; }
/** * @see * org.kuali.kfs.sys.batch.service.PaymentSourceToExtractService#createPaymentGroup(org.kuali.kfs.sys.document.PaymentSource, * java.sql.Date) */ @Override public PaymentGroup createPaymentGroup(TEMReimbursementDocument document, Date processRunDate) { if (LOG.isDebugEnabled()) { LOG.debug("createPaymentGroupForReimbursable() started"); } final boolean disburseCorporateCardPayments = getParameterService() .getParameterValueAsBoolean( TemParameterConstants.TEM_DOCUMENT.class, TemConstants.TravelParameters.CORPORATE_CARD_PAYMENT_IND); if (!disburseCorporateCardPayments) { return null; // can't disburse payments? then don't create payment groups } PaymentGroup pg = new PaymentGroup(); final CreditCardAgency creditCardAgency = getCorporateCreditCardAgency(document); if (creditCardAgency == null) { LOG.error( "Skipping corporate card payment for " + document.getDocumentNumber() + " because no credit card agency could be found."); return null; } final VendorDetail vendor = getCorporateCardVendor(creditCardAgency); if (vendor == null) { LOG.error( "Skipping corporate card payment for " + document.getDocumentNumber() + " because no vendor could be found."); return null; } final VendorAddress vendorAddress = getVendorService() .getVendorDefaultAddress( vendor.getVendorAddresses(), vendor .getVendorHeader() .getVendorType() .getAddressType() .getVendorAddressTypeCode(), ""); pg.setCombineGroups(Boolean.TRUE); pg.setCampusAddress(Boolean.FALSE); pg.setCity(vendorAddress.getVendorCityName()); pg.setCountry(vendorAddress.getVendorCountryCode()); pg.setLine1Address(vendorAddress.getVendorLine1Address()); pg.setLine2Address(vendorAddress.getVendorLine2Address()); pg.setPayeeName(vendor.getVendorName()); pg.setState(vendorAddress.getVendorStateCode()); pg.setZipCd(vendorAddress.getVendorZipCode()); pg.setPaymentDate(getNextDate(processRunDate)); pg.setProcessImmediate(false); pg.setPymtAttachment(false); pg.setPymtSpecialHandling(false); pg.setNraPayment(false); pg.setBankCode(creditCardAgency.getBankCode()); pg.setPaymentStatusCode(PdpConstants.PaymentStatusCodes.OPEN); if (StringUtils.equals( document.getTraveler().getTravelerTypeCode(), TemConstants.EMP_TRAVELER_TYP_CD)) { pg.setEmployeeIndicator(true); } pg.setPayeeId(vendor.getVendorNumber()); pg.setPayeeIdTypeCd(PdpConstants.PayeeIdTypeCodes.VENDOR_ID); pg.setTaxablePayment(Boolean.FALSE); pg.setPayeeOwnerCd(vendor.getVendorHeader().getVendorOwnershipCode()); // now add the payment detail final PaymentDetail paymentDetail = buildPaymentDetail(document, processRunDate); pg.addPaymentDetails(paymentDetail); paymentDetail.setPaymentGroup(pg); return pg; }