/** * @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; }
/** * Validation for the Stipulation tab. * * @param poDocument the purchase order document to be validated * @return boolean false if the vendor stipulation description is blank. */ @Override public boolean validate(AttributedDocumentEvent event) { boolean valid = super.validate(event); PurchasingAccountsPayableDocument purapDocument = (PurchasingAccountsPayableDocument) event.getDocument(); PurchaseOrderDocument poDocument = (PurchaseOrderDocument) purapDocument; MessageMap errorMap = GlobalVariables.getMessageMap(); errorMap.clearErrorPath(); errorMap.addToErrorPath(PurapConstants.VENDOR_ERRORS); // check to see if the vendor exists in the database, i.e. its ID is not null Integer vendorHeaderID = poDocument.getVendorHeaderGeneratedIdentifier(); if (ObjectUtils.isNull(vendorHeaderID)) { valid = false; errorMap.putError( VendorPropertyConstants.VENDOR_NAME, PurapKeyConstants.ERROR_NONEXIST_VENDOR); } // vendor active validation... VendorDetail vendorDetail = super.getVendorService() .getVendorDetail( poDocument.getVendorHeaderGeneratedIdentifier(), poDocument.getVendorDetailAssignedIdentifier()); if (ObjectUtils.isNull(vendorDetail)) { return valid; } // make sure that the vendor is active if (!vendorDetail.isActiveIndicator()) { valid &= false; errorMap.putError( VendorPropertyConstants.VENDOR_NAME, PurapKeyConstants.ERROR_INACTIVE_VENDOR); } // validate vendor address super.getPostalCodeValidationService() .validateAddress( poDocument.getVendorCountryCode(), poDocument.getVendorStateCode(), poDocument.getVendorPostalCode(), PurapPropertyConstants.VENDOR_STATE_CODE, PurapPropertyConstants.VENDOR_POSTAL_CODE); // Do checks for alternate payee vendor. Integer alternateVendorHdrGeneratedId = poDocument.getAlternateVendorHeaderGeneratedIdentifier(); Integer alternateVendorHdrDetailAssignedId = poDocument.getAlternateVendorDetailAssignedIdentifier(); VendorDetail alternateVendor = super.getVendorService() .getVendorDetail(alternateVendorHdrGeneratedId, alternateVendorHdrDetailAssignedId); if (alternateVendor != null) { if (alternateVendor.isVendorDebarred()) { errorMap.putError( PurapPropertyConstants.ALTERNATE_VENDOR_NAME, PurapKeyConstants.ERROR_PURCHASE_ORDER_ALTERNATE_VENDOR_DEBARRED); valid &= false; } if (StringUtils.equals( alternateVendor.getVendorHeader().getVendorTypeCode(), VendorTypes.DISBURSEMENT_VOUCHER)) { errorMap.putError( PurapPropertyConstants.ALTERNATE_VENDOR_NAME, PurapKeyConstants.ERROR_PURCHASE_ORDER_ALTERNATE_VENDOR_DV_TYPE); valid &= false; } if (!alternateVendor.isActiveIndicator()) { errorMap.putError( PurapPropertyConstants.ALTERNATE_VENDOR_NAME, PurapKeyConstants.ERROR_PURCHASE_ORDER_ALTERNATE_VENDOR_INACTIVE, PODocumentsStrings.ALTERNATE_PAYEE_VENDOR); valid &= false; } } // make sure that the vendor contract expiration date and not marked inactive. if (StringUtils.isNotBlank(poDocument.getVendorContractName())) { if (super.getVendorService() .isVendorContractExpired( poDocument, poDocument.getVendorContractGeneratedIdentifier(), vendorDetail)) { errorMap.putError( VendorPropertyConstants.VENDOR_CONTRACT_END_DATE, PurapKeyConstants.ERROR_EXPIRED_CONTRACT_END_DATE); valid &= false; } } errorMap.clearErrorPath(); return valid; }