001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.module.purap; 017 018 import java.util.ArrayList; 019 import java.util.Arrays; 020 import java.util.Collections; 021 import java.util.HashMap; 022 import java.util.HashSet; 023 import java.util.List; 024 import java.util.Map; 025 import java.util.Set; 026 027 import org.apache.commons.lang.StringUtils; 028 import org.kuali.kfs.module.purap.businessobject.AvailabilityMatrix; 029 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderAccount; 030 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderItem; 031 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderVendorQuote; 032 import org.kuali.kfs.module.purap.document.PaymentRequestDocument; 033 import org.kuali.kfs.module.purap.document.PurchaseOrderDocument; 034 import org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocumentBase; 035 import org.kuali.kfs.module.purap.document.RequisitionDocument; 036 import org.kuali.kfs.module.purap.document.VendorCreditMemoDocument; 037 import org.kuali.kfs.sys.KFSConstants; 038 import org.kuali.kfs.sys.KFSPropertyConstants; 039 import org.kuali.rice.core.util.JSTLConstants; 040 import org.kuali.rice.kns.util.KualiDecimal; 041 042 /** 043 * Holds constants for PURAP. 044 */ 045 public class PurapConstants extends JSTLConstants { 046 047 public static final String PURAP_NAMESPACE = "KFS-PURAP"; 048 049 public static final KualiDecimal HUNDRED = new KualiDecimal(100); 050 051 052 public static final String B2B_PUNCHBACK_METHOD_TO_CALL = "returnFromShopping"; 053 054 public static final String PDP_PURAP_EXTRACT_FILE_NAME = "extr_fr_purap"; 055 056 public static class QuoteTypes { 057 public static final String COMPETITIVE = "COMP"; 058 public static final String PRICE_CONFIRMATION = "CONF"; 059 } 060 061 public static class QuoteTypeDescriptions { 062 public static final String COMPETITIVE = "Competitive"; 063 public static final String PRICE_CONFIRMATION = "Price Confirmation"; 064 } 065 066 public static class QuoteTransmitTypes { 067 public static final String PRINT = "PRINT"; 068 public static final String FAX = "FAX"; 069 } 070 071 public static class QuoteStatusCode { 072 public static final String DELV = "DELV"; 073 public static final String FUIP = "FUIP"; 074 public static final String IIQ = "IIQ"; 075 public static final String LEXP = "LEXP"; 076 public static final String MULT = "MULT"; 077 public static final String NORS = "NORS"; 078 public static final String PTFE = "PTFE"; 079 public static final String RECV = "RECV"; 080 public static final String RIR = "RIR"; 081 public static final String RECL = "RECL"; 082 public static final String RNLB = "RNLB"; 083 public static final String RNLN = "RNLN"; 084 public static final String NOBD = "NOBD"; 085 public static final String SQNA = "SQNA"; 086 public static final String TINC = "TINC"; 087 } 088 public static final String NOTE_TAB_WARNING = "noteWarning"; 089 090 public static final String QUESTION_INDEX = "questionIndex"; 091 public static final String REMOVE_ACCOUNTS_QUESTION = "RemoveAccounts"; 092 public static final String CLEAR_COMMODITY_CODES_QUESTION = "ClearCommodityCodes"; 093 public static final String QUESTION_ROUTE_DOCUMENT_TO_COMPLETE = "Completing this document will remove it from your Action List.<br/><br/> Are you sure you want to continue?"; 094 public static final String QUESTION_REMOVE_ACCOUNTS = "question.document.purap.removeAccounts"; 095 public static final String QUESTION_CLEAR_ALL_COMMODITY_CODES = "question.document.pur.clearCommodityCodes"; 096 // TODO - This constant is referenced, but has no corresponding value in ApplicationResources.properties???? 097 public static final String CONFIRM_CHANGE_DFLT_RVNG_ADDR = "confirm.change.dflt.rcvng.addr"; 098 public static final String CONFIRM_CHANGE_DFLT_RVNG_ADDR_TXT = "Setting this receiving address to be default will unset the current default address. Do you want to proceed?"; 099 100 public static final String REQ_REASON_NOT_APO = "Requisition did not become an APO because: "; 101 public static final String REQ_UNABLE_TO_CREATE_NOTE = "Unable to create a note on this document."; 102 103 public static final String TRADE_IN_OBJECT_CODE_FOR_CAPITAL_ASSET_OBJECT_SUB_TYPE = "7070"; 104 public static final String TRADE_IN_OBJECT_CODE_FOR_CAPITAL_LEASE_OBJECT_SUB_TYPE = "7099"; 105 106 // PDF KFSConstants 107 public static final String IMAGE_TEMP_PATH = "PDF_IMAGE_TEMP_PATH"; 108 public static final String PDF_DIRECTORY = "PDF_DIRECTORY"; 109 public static final String STATUS_INQUIRY_URL = "PDF_STATUS_INQUIRY_URL"; 110 public static final String PURCHASING_DIRECTOR_IMAGE_PREFIX = "PDF_DIRECTOR_IMAGE_PREFIX"; 111 public static final String PURCHASING_DIRECTOR_IMAGE_EXTENSION = "PDF_DIRECTOR_IMAGE_EXTENSION"; 112 public static final String CONTRACT_MANAGER_IMAGE_PREFIX = "PDF_IMAGE_PREFIX"; 113 public static final String CONTRACT_MANAGER_IMAGE_EXTENSION = "PDF_IMAGE_EXTENSION"; 114 public static final String LOGO_IMAGE_PREFIX = "PDF_LOGO_IMAGE_PREFIX"; 115 public static final String LOGO_IMAGE_EXTENSION = "PDF_LOGO_IMAGE_EXTENSION"; 116 public static final String PDF_IMAGES_AVAILABLE_INDICATOR = "PDF_IMAGES_AVAILABLE_IND"; 117 public static final String PDF_IMAGE_LOCATION_URL = "PDF_IMAGE_LOCATION_URL"; 118 119 public static final String TAX_RECALCULATION_INFO = "TaxRecalculationQuestion"; 120 public static final String TAX_RECALCULATION_QUESTION = "The postal code of the delivery address has changed.[br]Selecting \"Yes\" will submit the document without recalculating the taxes.[br]Selecting \"No\" will return you to the document so that the taxes can be recalculated.[br]The \"clear all\" button can be used to clear all tax amounts which will force taxes to be recalculated upon submission."; 121 122 public static class RequisitionStatuses { 123 public static final String IN_PROCESS = "INPR"; 124 public static final String CANCELLED = "CANC"; 125 public static final String CLOSED = "CLOS"; 126 public static final String AWAIT_CONTENT_REVIEW = "ACNT"; 127 public static final String AWAIT_HAS_ACCOUNTING_LINES = "AHAL"; 128 public static final String AWAIT_SUB_ACCT_REVIEW = "ASUB"; 129 public static final String AWAIT_FISCAL_REVIEW = "AFIS"; 130 public static final String AWAIT_CHART_REVIEW = "ACHA"; 131 public static final String AWAIT_COMMODITY_CODE_REVIEW = "WCOM"; 132 public static final String AWAIT_SEP_OF_DUTY_REVIEW = "ASOD"; 133 public static final String DAPRVD_CONTENT = "DCNT"; 134 public static final String DAPRVD_HAS_ACCOUNTING_LINES = "DHAL"; 135 public static final String DAPRVD_SUB_ACCT = "DSUB"; 136 public static final String DAPRVD_FISCAL = "DFIS"; 137 public static final String DAPRVD_CHART = "DCHA"; 138 public static final String DAPRVD_COMMODITY_CODE = "DCOM"; 139 public static final String DAPRVD_SEP_OF_DUTY = "DSOD"; 140 public static final String AWAIT_CONTRACT_MANAGER_ASSGN = "ACMR"; 141 142 } 143 144 public static class POCostSources { 145 public static final String ESTIMATE = "EST"; 146 } 147 148 public static final class POTransmissionMethods { 149 public static final String FAX = "FAX"; 150 public static final String PRINT = "PRIN"; 151 public static final String NOPRINT = "NOPR"; 152 public static final String ELECTRONIC = "ELEC"; 153 } 154 155 public static final String REQ_B2B_ALLOW_COPY_DAYS = "5"; 156 public static final String B2B_VENDOR_CONTRACT_NOT_FOUND_ERROR_MESSAGE = "The vendor whose shopping cart you are attempting to return does not have an active contract for your organization."; 157 public static final String B2B_URL_STRING = "&channelUrl=b2b.do?methodToCall=shopCatalogs"; 158 159 public static class RequisitionSources { 160 public static final String STANDARD_ORDER = "STAN"; 161 public static final String B2B = "B2B"; 162 } 163 164 // PURCHASE ORDER VENDOR CHOICE CODES 165 public static class VendorChoice { 166 public static final String CONTRACTED_PRICE = "CONT"; 167 public static final String SMALL_ORDER = "SMAL"; 168 public static final String PROFESSIONAL_SERVICE = "PROF"; 169 public static final String SUBCONTRACT = "SUBC"; 170 } 171 172 public static String[] AUTO_CLOSE_EXCLUSION_VNDR_CHOICE_CODES = {VendorChoice.SUBCONTRACT}; 173 174 public static Integer APO_CONTRACT_MANAGER = new Integer(99); 175 176 // Requisition/Purchase Order Tab Errors 177 public static final String DELIVERY_TAB_ERRORS = "document.delivery*"; 178 public static final String DETAIL_TAB_ERRORS="document"; 179 public static final String VENDOR_ERRORS = "document.vendor*,document.purchaseOrderVendorChoiceCode,document.alternateVendorName,document.shipmentReceivedDate"; 180 public static final String ADDITIONAL_TAB_ERRORS = "document.requestor*,document.institution*,document.purchaseOrderTransmissionMethodCode,document.purchaseOrderCostSourceCode,document.purchaseOrderTotalLimit"; 181 public static final String ITEM_TAB_ERRORS = "document.item*,newPurchasingItemLine*,itemQuantity,document.grandTotal,accountDistributionnewSourceLine*"; 182 public static final String LINEITEM_TAB_ERRORS = "document.item*,newLineItemReceivingItemLine*"; 183 public static final String ITEM_TAB_ERROR_PROPERTY = ITEM_TAB_ERRORS; // used to be "newPurchasingItemLine" 184 public static final String ACCOUNT_SUMMARY_TAB_ERRORS = "document.accountSummary*"; 185 public static final String ACCOUNT_DISTRIBUTION_ERROR_KEY = "accountDistributionnewSourceLine"; 186 public static final String RELATED_DOCS_TAB_ERRORS = ""; 187 public static final String PAYMENT_HISTORY_TAB_ERRORS = ""; 188 public static final String PAYMENT_INFO_ERRORS = "document.paymentInfo"; 189 public static final String PAYMENT_INFO_TAB_ERRORS = "document.paymentInfo*,document.purchaseOrderBeginDate,document.purchaseOrderEndDate,document.finalPaymentAmount,document.initialPaymentAmount,document.recurringPaymentAmount"; 190 public static final String CAPITAL_ASSET_TAB_ERRORS = "document.purchasingCapitalAsset*,newPurchasingItemCapitalAssetLine*,newPurchasingCapitalAssetLocationLine*"; 191 public static final String SPLIT_PURCHASE_ORDER_TAB_ERRORS = "document.splitPurchaseOrder"; 192 public static final String ASSIGN_SENSITIVE_DATA_TAB_ERRORS = "document.assignSensitiveData"; 193 public static final String STIPULATIONS_TAB_ERRORS = "document.purchaseOrderVendorStipulation*,newPurchaseOrderVendorStipulationLine*"; 194 // PO/Quotes Tab Constants 195 public static final String QUOTE_TAB_ERRORS = "document.quote*,quote*,purchaseOrderVendorQuotes*,newPurchaseOrderVendorQuote*,document.purchaseOrderVendorQuote*"; 196 //PO Number Warning 197 public static final String WARNING_PURCHASEORDER_NUMBER_DONT_DISCLOSE = "warning.purchaseorder.number.dont.disclose"; 198 199 // Assign Contract Manager 200 public static final String ASSIGN_CONTRACT_MANAGER_DEFAULT_DESC = "Contract Manager Assigned"; 201 public static final String ASSIGN_CONTRACT_MANAGER_TAB_ERRORS = "document.unassignedRequisition*"; 202 203 public static class PurchaseOrderStatuses { 204 public static final String IN_PROCESS = "INPR"; 205 public static final String WAITING_FOR_VENDOR = "WVEN"; 206 public static final String WAITING_FOR_DEPARTMENT = "WDPT"; 207 public static final String OPEN = "OPEN"; 208 public static final String CLOSED = "CLOS"; 209 public static final String CANCELLED = "CANC"; 210 public static final String PAYMENT_HOLD = "PHOL"; 211 public static final String AWAIT_TAX_REVIEW = "WTAX"; 212 public static final String AWAIT_BUDGET_REVIEW = "WBUD"; 213 public static final String AWAIT_CONTRACTS_GRANTS_REVIEW = "WCG"; 214 public static final String AWAIT_PURCHASING_REVIEW = "WPUR"; 215 public static final String AWAIT_COMMODITY_CODE_REVIEW = "WCOM"; 216 public static final String AWAIT_NEW_UNORDERED_ITEM_REVIEW = "WNUI"; 217 public static final String DAPRVD_TAX = "DTAX"; 218 public static final String DAPRVD_BUDGET = "DBUD"; 219 public static final String DAPRVD_CONTRACTS_GRANTS = "DCG"; 220 public static final String DAPRVD_PURCHASING = "DPUR"; 221 public static final String DAPRVD_COMMODITY_CODE = "DCOM"; 222 public static final String CXML_ERROR = "CXER"; 223 public static final String PENDING_CXML = "CXPE"; 224 public static final String PENDING_FAX = "FXPE"; 225 public static final String FAX_ERROR = "FXER"; 226 public static final String PENDING_PRINT = "PRPE"; 227 public static final String QUOTE = "QUOT"; 228 public static final String VOID = "VOID"; 229 public static final String AMENDMENT = "AMND"; 230 231 public static final String RETIRED_VERSION = "RTVN"; 232 public static final String CHANGE_IN_PROCESS = "CGIN"; 233 public static final String CANCELLED_CHANGE = "CNCG"; 234 public static final String DISAPPROVED_CHANGE = "DACG"; 235 public static final String PENDING_VOID = "VOPE"; 236 public static final String PENDING_PAYMENT_HOLD = "PHPE"; 237 public static final String PENDING_RETRANSMIT = "RTPE"; 238 public static final String PENDING_CLOSE = "CLPE"; 239 public static final String PENDING_REOPEN = "ROPE"; 240 public static final String PENDING_REMOVE_HOLD = "RHPE"; 241 242 public static final Set<String> INCOMPLETE_STATUSES = new HashSet<String>(); 243 public static final Set<String> COMPLETE_STATUSES = new HashSet<String>(); 244 245 static { 246 INCOMPLETE_STATUSES.add(AWAIT_TAX_REVIEW); 247 INCOMPLETE_STATUSES.add(AWAIT_BUDGET_REVIEW); 248 INCOMPLETE_STATUSES.add(AWAIT_CONTRACTS_GRANTS_REVIEW); 249 INCOMPLETE_STATUSES.add(AWAIT_PURCHASING_REVIEW); 250 INCOMPLETE_STATUSES.add(AWAIT_NEW_UNORDERED_ITEM_REVIEW); 251 INCOMPLETE_STATUSES.add(AWAIT_COMMODITY_CODE_REVIEW); 252 INCOMPLETE_STATUSES.add(FAX_ERROR); 253 INCOMPLETE_STATUSES.add(QUOTE); 254 INCOMPLETE_STATUSES.add(CXML_ERROR); 255 INCOMPLETE_STATUSES.add(PENDING_CXML); 256 INCOMPLETE_STATUSES.add(IN_PROCESS); 257 INCOMPLETE_STATUSES.add(PAYMENT_HOLD); 258 INCOMPLETE_STATUSES.add(PENDING_FAX); 259 INCOMPLETE_STATUSES.add(PENDING_PRINT); 260 INCOMPLETE_STATUSES.add(WAITING_FOR_VENDOR); 261 INCOMPLETE_STATUSES.add(WAITING_FOR_DEPARTMENT); 262 263 COMPLETE_STATUSES.add(AMENDMENT); 264 COMPLETE_STATUSES.add(CANCELLED); 265 COMPLETE_STATUSES.add(CHANGE_IN_PROCESS); 266 COMPLETE_STATUSES.add(CLOSED); 267 COMPLETE_STATUSES.add(PENDING_CLOSE); 268 COMPLETE_STATUSES.add(CANCELLED_CHANGE); 269 COMPLETE_STATUSES.add(CXML_ERROR); 270 COMPLETE_STATUSES.add(DISAPPROVED_CHANGE); 271 COMPLETE_STATUSES.add(DAPRVD_BUDGET); 272 COMPLETE_STATUSES.add(DAPRVD_CONTRACTS_GRANTS); 273 COMPLETE_STATUSES.add(DAPRVD_COMMODITY_CODE); 274 COMPLETE_STATUSES.add(DAPRVD_PURCHASING); 275 COMPLETE_STATUSES.add(DAPRVD_TAX); 276 COMPLETE_STATUSES.add(OPEN); 277 COMPLETE_STATUSES.add(PAYMENT_HOLD); 278 COMPLETE_STATUSES.add(PENDING_PAYMENT_HOLD); 279 COMPLETE_STATUSES.add(PENDING_REMOVE_HOLD); 280 COMPLETE_STATUSES.add(PENDING_REOPEN); 281 COMPLETE_STATUSES.add(PENDING_RETRANSMIT); 282 COMPLETE_STATUSES.add(RETIRED_VERSION); 283 COMPLETE_STATUSES.add(VOID); 284 COMPLETE_STATUSES.add(PENDING_VOID); 285 286 } 287 288 289 290 291 /** 292 * Do not include 'OPEN' status in this map. The 'OPEN' status is the default status that is set when no status exists for a 293 * particular pending transmission type code. 294 * 295 * @see {@link org.kuali.module.purap.service.PurchaseOrderService#completePurchaseOrder(org.kuali.module.purap.document.PurchaseOrderDocument)} 296 */ 297 private static final Map<String, String> getStatusesByTransmissionType() { 298 Map<String, String> statusByTrans = new HashMap<String, String>(); 299 statusByTrans.put(PurapConstants.POTransmissionMethods.PRINT, PENDING_PRINT); 300 statusByTrans.put(PurapConstants.POTransmissionMethods.ELECTRONIC, PENDING_CXML); 301 statusByTrans.put(PurapConstants.POTransmissionMethods.FAX, PENDING_FAX); 302 return Collections.unmodifiableMap(statusByTrans); 303 } 304 305 public static final Map<String, String> STATUSES_BY_TRANSMISSION_TYPE = getStatusesByTransmissionType(); 306 307 } 308 309 public static final class ItemTypeCodes { 310 // ITEM TYPES 311 public static final String ITEM_TYPE_ITEM_CODE = "ITEM"; 312 public static final String ITEM_TYPE_SERVICE_CODE = "SRVC"; 313 public static final String ITEM_TYPE_FREIGHT_CODE = "FRHT"; 314 public static final String ITEM_TYPE_SHIP_AND_HAND_CODE = "SPHD"; 315 public static final String ITEM_TYPE_TRADE_IN_CODE = "TRDI"; 316 public static final String ITEM_TYPE_ORDER_DISCOUNT_CODE = "ORDS"; 317 public static final String ITEM_TYPE_MIN_ORDER_CODE = "MNOR"; 318 public static final String ITEM_TYPE_MISC_CODE = "MISC"; 319 public static final String ITEM_TYPE_PMT_TERMS_DISCOUNT_CODE = "DISC"; 320 public static final String ITEM_TYPE_FEDERAL_TAX_CODE = "FDTX"; 321 public static final String ITEM_TYPE_STATE_TAX_CODE = "STTX"; 322 public static final String ITEM_TYPE_FEDERAL_GROSS_CODE = "FDGR"; 323 public static final String ITEM_TYPE_STATE_GROSS_CODE = "STGR"; 324 public static final String ITEM_TYPE_RESTCK_FEE_CODE = "RSTO"; 325 public static final String ITEM_TYPE_MISC_CRDT_CODE = "MSCR"; 326 public static final String ITEM_TYPE_UNORDERED_ITEM_CODE = "UNOR"; 327 public static final String ITEM_TYPE_SHIPPING_CODE = "SHIP"; 328 329 public static final Set<String> EXCLUDED_ITEM_TYPES = new HashSet<String>(); 330 static { 331 EXCLUDED_ITEM_TYPES.add(ITEM_TYPE_UNORDERED_ITEM_CODE); 332 } 333 } 334 335 // Item constants 336 public static final int DOLLAR_AMOUNT_MIN_SCALE = 2; 337 public static final int UNIT_PRICE_MAX_SCALE = 4; 338 public static final int PREQ_DESC_LENGTH = 500; 339 public static final String PREQ_DISCOUNT_MULT = "-0.01"; 340 341 public static final String REQUISITION_DOCUMENT_TYPE = "REQS"; 342 public static final String RECEIVING_THRESHOLD_DOCUMENT_TYPE = "THLD"; 343 344 public static class PurchaseOrderDocTypes { 345 public static final String PURCHASE_ORDER_REOPEN_DOCUMENT = "POR"; 346 public static final String PURCHASE_ORDER_CLOSE_DOCUMENT = "POC"; 347 public static final String PURCHASE_ORDER_DOCUMENT = "PO"; 348 public static final String PURCHASE_ORDER_RETRANSMIT_DOCUMENT = "PORT"; 349 public static final String PURCHASE_ORDER_PRINT_DOCUMENT = "PurchaseOrderPrintDocument"; 350 public static final String PURCHASE_ORDER_VOID_DOCUMENT = "POV"; 351 public static final String PURCHASE_ORDER_PAYMENT_HOLD_DOCUMENT = "POPH"; 352 public static final String PURCHASE_ORDER_REMOVE_HOLD_DOCUMENT = "PORH"; 353 public static final String PURCHASE_ORDER_AMENDMENT_DOCUMENT = "POA"; 354 public static final String PURCHASE_ORDER_SPLIT_DOCUMENT = "POSP"; 355 } 356 357 public static class PODocumentsStrings { 358 public static final String CLOSE_QUESTION = "POClose"; 359 public static final String CLOSE_CONFIRM = "POCloseConfirm"; 360 public static final String CLOSE_NOTE_PREFIX = "Note entered while closing a Purchase Order :"; 361 362 public static final String REOPEN_PO_QUESTION = "ReopenPO"; 363 public static final String CONFIRM_REOPEN_QUESTION = "ConfirmReopen"; 364 public static final String REOPEN_NOTE_PREFIX = "Note entered while reopening a Purchase Order : "; 365 366 public static final String VOID_QUESTION = "POVoid"; 367 public static final String VOID_CONFIRM = "POVoidConfirm"; 368 public static final String VOID_NOTE_PREFIX = "Note entered while voiding a Purchase Order :"; 369 370 public static final String PAYMENT_HOLD_QUESTION = "POPaymentHold"; 371 public static final String PAYMENT_HOLD_CONFIRM = "POPaymentHoldConfirm"; 372 public static final String PAYMENT_HOLD_NOTE_PREFIX = "Note entered while putting a Purchase Order on payment hold :"; 373 374 public static final String REMOVE_HOLD_QUESTION = "PORemoveHold"; 375 public static final String REMOVE_HOLD_CONFIRM = "PORemoveHoldConfirm"; 376 public static final String REMOVE_HOLD_NOTE_PREFIX = "Note entered while removing a Purchase Order from payment hold :"; 377 public static final String REMOVE_HOLD_FYI = "This document was taken off Payment Hold status."; 378 379 public static final String AMENDMENT_PO_QUESTION = "AmendmentPO"; 380 public static final String CONFIRM_AMENDMENT_QUESTION = "ConfirmAmendment"; 381 public static final String AMENDMENT_NOTE_PREFIX = "Note entered while amending a Purchase Order : "; 382 383 public static final String SPLIT_QUESTION = "POSplit"; 384 public static final String SPLIT_CONFIRM = "POSplitConfirm"; 385 public static final String SPLIT_NOTE_PREFIX_OLD_DOC = "Note entered while splitting this Purchase Order : "; 386 public static final String SPLIT_NOTE_PREFIX_NEW_DOC = "Note entered while being split from Purchase Order "; 387 public static final String SPLIT_ADDL_CHARGES_WARNING_LABEL = "WARNING"; 388 public static final String SPLIT_ADDL_CHARGES_WARNING = "* ADDITIONAL CHARGES EXIST *"; 389 public static final String SPLIT_NOTE_TEXT = "splitNoteText"; 390 public static final String ITEMS_MOVING_TO_SPLIT = "movingPOItems"; 391 public static final String ITEMS_REMAINING = "remainingPOItems"; 392 public static final String LINE_ITEMS_REMAINING = "remainingPOLineItems"; 393 394 public static final String CONFIRM_AWARD_QUESTION = "POConfirmAward"; 395 public static final String CONFIRM_AWARD_RETURN = "completeQuote"; 396 397 public static final String CONFIRM_CANCEL_QUESTION = "POCancelQuote"; 398 public static final String CONFIRM_CANCEL_RETURN = "cancelQuote"; 399 400 public static final String SINGLE_CONFIRMATION_QUESTION = "singleConfirmationQuestion"; 401 402 public static final String MANUAL_STATUS_CHANGE_QUESTION = "manualStatusChangeQuestion"; 403 public static final String OPEN_STATUS = "Open"; 404 405 public static final String POSTAL_CODE = "Postal Code"; 406 public static final String ALTERNATE_PAYEE_VENDOR = "Alternate Payee Vendor"; 407 } 408 409 public static final String PO_OVERRIDE_NOT_TO_EXCEED_QUESTION = "OverrideNotToExceed"; 410 public static final String FIX_CAPITAL_ASSET_WARNINGS = "FixCapitalAssetWarnings"; 411 public static final String PO_NEXT_FY_WARNING = "NextFiscalYearWarning"; 412 413 // ACCOUNTS PAYABLE 414 public static final String AP_OVERRIDE_INVOICE_NOMATCH_QUESTION = "OverrideInvoiceNoMatch"; 415 416 public static class AccountsPayableDocumentStrings { 417 public static final String CANCEL_NOTE_PREFIX = "Note entered while canceling document: "; 418 } 419 420 // PAYMENT REQUEST 421 public static final String PAYMENT_REQUEST_ACTION_NAME = "PaymentRequest"; 422 public static final String PREQ_PAY_DATE_DAYS = "days"; 423 public static final String PREQ_PAY_DATE_DATE = "date"; 424 public static final int PREQ_PAY_DATE_EMPTY_TERMS_DEFAULT_DAYS = 28; 425 public static final int PREQ_PAY_DATE_DAYS_BEFORE_WARNING = 60; 426 427 //TAB ERROR KEYS 428 public static final String PAYMENT_REQUEST_INIT_TAB_ERRORS = "document.purchaseOrderIdentifier,document.invoiceNumber,document.invoiceDate,document.vendorInvoiceAmount,document.specialHandlingInstructionLine1Text,document.specialHandlingInstructionLine2Text,document.specialHandlingInstructionLine3Text"; 429 public static final String PAYMENT_REQUEST_TAX_TAB_ERRORS = "document.tax*"; 430 public static final String PAYMENT_REQUEST_INVOICE_TAB_ERRORS = "document.paymentRequestPayDate,document.bank*,bankCode"; 431 public static final String RECEIVING_LINE_INIT_TAB_ERRORS = "document.purchaseOrderIdentifier,document.shipmentReceivedDate,document.shipmentPackingSlipNumber,document.shipmentBillOfLadingNumber,document.carrierCode"; 432 public static final String BULK_RECEIVING_INIT_TAB_ERRORS = "document.purchaseOrderIdentifier,document.shipmentReceivedDate,document.shipmentPackingSlipNumber,document.shipmentBillOfLadingNumber,document.carrierCode"; 433 public static final String BULK_RECEIVING_VENDOR_TAB_ERRORS = "document.vendor*,document.alternate*,document.goodsDelivered*,document.shipmentReceivedDate,document.shipmentPackingSlipNumber,document.shipmentBillOfLadingNumber,document.carrierCode,document.shipmentReferenceNumber,document.shipmentWeight,document.noOfCartons,document.trackingNumber"; 434 public static final String BULK_RECEIVING_DELIVERY_TAB_ERRORS = "document.delivery*,document.institution*,document.requestor,document.preparer"; 435 public static final String REJECT_DOCUMENT_TAB_ERRORS = "document.vendorDunsNumber,document.vendor*,document.invoice*"; 436 437 // Weird PaymentTermsType is due on either the 10th or 25th with no discount 438 public static final String PMT_TERMS_TYP_NO_DISCOUNT_CD = "00N2T"; 439 440 public static final String PURAP_AP_SHOW_CONTINUATION_ACCOUNT_WARNING_FISCAL_OFFICERS = "SHOW_CONTINUATION_ACCOUNT_WARNING_FISCAL_OFFICERS_IND"; 441 public static final String PURAP_AP_SHOW_CONTINUATION_ACCOUNT_WARNING_AP_USERS = "SHOW_CONTINUATION_ACCOUNT_WARNING_AP_USERS_IND"; 442 443 public static final class PaymentRequestIndicatorText { 444 public static final String HOLD = "HOLD"; 445 public static final String REQUEST_CANCEL = "REQUEST CANCEL"; 446 } 447 448 public static class AccountsPayableSharedStatuses { 449 public static final String IN_PROCESS = "INPR"; 450 public static final String AWAITING_ACCOUNTS_PAYABLE_REVIEW = "APAD"; // Waiting for Accounts Payable approval 451 } 452 453 public static final class PaymentRequestStatuses { 454 public static final String INITIATE = "INIT"; 455 public static final String IN_PROCESS = "INPR"; 456 public static final String CANCELLED_IN_PROCESS = "CIPR"; 457 public static final String CANCELLED_POST_AP_APPROVE = "CANC"; 458 public static final String DEPARTMENT_APPROVED = "DPTA"; 459 public static final String AUTO_APPROVED = "AUTO"; 460 public static final String AWAITING_ACCOUNTS_PAYABLE_REVIEW = "APAD"; // Waiting for Accounts Payable approval 461 public static final String AWAITING_RECEIVING_REVIEW = "ARVR"; // Waiting for Receiving approval 462 public static final String AWAITING_SUB_ACCT_MGR_REVIEW = "ASAA"; // Waiting for Sub Acct Manager approval 463 public static final String AWAITING_FISCAL_REVIEW = "AFOA"; // Waiting for Fiscal Officer approval 464 public static final String AWAITING_ORG_REVIEW = "ACHA"; // Waiting for Chart/Org approval 465 public static final String AWAITING_TAX_REVIEW = "ATAX"; // Waiting for Vendor Tax approval 466 public static final String PENDING_E_INVOICE = "PEIN"; 467 468 // keep these in the order of potential routing 469 // Note it doesn't make much sense to compare auto_approved and dept_approved but this is 470 // easier than two enums plus this should primarily be used for user enterred areas 471 public enum STATUS_ORDER { 472 CANCELLED_IN_PROCESS(PurapConstants.PaymentRequestStatuses.CANCELLED_IN_PROCESS, false), 473 CANCELLED_POST_AP_APPROVE(PurapConstants.PaymentRequestStatuses.CANCELLED_POST_AP_APPROVE, false), 474 INITIATE(PurapConstants.PaymentRequestStatuses.INITIATE, true), 475 IN_PROCESS(PurapConstants.PaymentRequestStatuses.IN_PROCESS, true), 476 AWAITING_ACCOUNTS_PAYABLE_REVIEW(PurapConstants.PaymentRequestStatuses.AWAITING_ACCOUNTS_PAYABLE_REVIEW, false), 477 AWAITING_RECEIVING_REVIEW(PurapConstants.PaymentRequestStatuses.AWAITING_RECEIVING_REVIEW, false), 478 AWAITING_SUB_ACCT_MGR_REVIEW(PurapConstants.PaymentRequestStatuses.AWAITING_SUB_ACCT_MGR_REVIEW, false), 479 AWAITING_FISCAL_REVIEW(PurapConstants.PaymentRequestStatuses.AWAITING_FISCAL_REVIEW, false), 480 AWAITING_ORG_REVIEW(PurapConstants.PaymentRequestStatuses.AWAITING_ORG_REVIEW, false), 481 AWAITING_TAX_REVIEW(PurapConstants.PaymentRequestStatuses.AWAITING_TAX_REVIEW, false), 482 DEPARTMENT_APPROVED(PurapConstants.PaymentRequestStatuses.DEPARTMENT_APPROVED, false), 483 AUTO_APPROVED(PurapConstants.PaymentRequestStatuses.AUTO_APPROVED, false), ; 484 485 private String statusCode = new String(); 486 private boolean fullEntryAllowed = false; 487 488 STATUS_ORDER(String statusCode, boolean fullEntry) { 489 this.statusCode = statusCode; 490 this.fullEntryAllowed = fullEntry; 491 } 492 493 public static STATUS_ORDER getByStatusCode(String statusCode) { 494 for (STATUS_ORDER status : STATUS_ORDER.values()) { 495 if (StringUtils.equals(status.statusCode, statusCode)) { 496 return status; 497 } 498 } 499 return null; 500 } 501 502 public static boolean isFullDocumentEntryCompleted(String status) { 503 if (StringUtils.isNotBlank(status)) { 504 return !getByStatusCode(status).fullEntryAllowed; 505 } 506 return false; 507 } 508 509 public static STATUS_ORDER getPreviousStatus(String statusCode) { 510 STATUS_ORDER statusOrder = STATUS_ORDER.getByStatusCode(statusCode); 511 if (statusOrder.ordinal() > 0) { 512 return STATUS_ORDER.values()[statusOrder.ordinal() - 1]; 513 } 514 return null; 515 } 516 517 public static boolean isFirstFullEntryStatus(String statusCode) { 518 // NOTE this won't work if there endsup being two ways to get to the first full entry status (i.e. like AUTO/DEPT 519 // for final) 520 return getByStatusCode(statusCode).fullEntryAllowed && !getPreviousStatus(statusCode).fullEntryAllowed; 521 } 522 } 523 524 525 public static final String[] PREQ_STATUSES_FOR_AUTO_APPROVE = { AWAITING_SUB_ACCT_MGR_REVIEW, AWAITING_FISCAL_REVIEW, AWAITING_ORG_REVIEW }; 526 527 public static final String[] STATUSES_ALLOWED_FOR_EXTRACTION = { AUTO_APPROVED, DEPARTMENT_APPROVED }; 528 529 public static final String[] STATUSES_POTENTIALLY_ACTIVE = { IN_PROCESS, DEPARTMENT_APPROVED, AUTO_APPROVED, AWAITING_ACCOUNTS_PAYABLE_REVIEW, AWAITING_RECEIVING_REVIEW, AWAITING_SUB_ACCT_MGR_REVIEW, AWAITING_FISCAL_REVIEW, AWAITING_ORG_REVIEW, AWAITING_TAX_REVIEW }; 530 531 public static final Set CANCELLED_STATUSES = new HashSet(); 532 public static final Set STATUSES_DISALLOWING_HOLD = new HashSet(); 533 public static final Set STATUSES_DISALLOWING_REMOVE_HOLD = new HashSet(); 534 public static final Set STATUSES_DISALLOWING_REQUEST_CANCEL = new HashSet(); 535 public static final Set STATUSES_DISALLOWING_REMOVE_REQUEST_CANCEL = new HashSet(); 536 static { 537 CANCELLED_STATUSES.add(CANCELLED_IN_PROCESS); 538 CANCELLED_STATUSES.add(CANCELLED_POST_AP_APPROVE); 539 540 STATUSES_DISALLOWING_HOLD.add(INITIATE); 541 STATUSES_DISALLOWING_HOLD.add(IN_PROCESS); 542 STATUSES_DISALLOWING_HOLD.addAll(Arrays.asList(CANCELLED_STATUSES.toArray(new String[CANCELLED_STATUSES.size()]))); 543 544 STATUSES_DISALLOWING_REMOVE_HOLD.addAll(Arrays.asList(CANCELLED_STATUSES.toArray(new String[CANCELLED_STATUSES.size()]))); 545 546 STATUSES_DISALLOWING_REQUEST_CANCEL.add(INITIATE); 547 STATUSES_DISALLOWING_REQUEST_CANCEL.add(IN_PROCESS); 548 STATUSES_DISALLOWING_REQUEST_CANCEL.add(DEPARTMENT_APPROVED); 549 STATUSES_DISALLOWING_REQUEST_CANCEL.add(AUTO_APPROVED); 550 STATUSES_DISALLOWING_REQUEST_CANCEL.add(AWAITING_ACCOUNTS_PAYABLE_REVIEW); 551 STATUSES_DISALLOWING_REQUEST_CANCEL.addAll(Arrays.asList(CANCELLED_STATUSES.toArray(new String[CANCELLED_STATUSES.size()]))); 552 553 STATUSES_DISALLOWING_REMOVE_REQUEST_CANCEL.addAll(Arrays.asList(CANCELLED_STATUSES.toArray(new String[CANCELLED_STATUSES.size()]))); 554 } 555 } 556 557 public static class LineItemReceivingDocumentStrings{ 558 public static final String DUPLICATE_RECEIVING_LINE_QUESTION = "DuplicateReceivingLine"; 559 public static final String VENDOR_DATE = "Vendor Date"; 560 public static final String AWAITING_PO_OPEN_STATUS = "OutstandingTransactions"; 561 public static final String JOIN_NODE = "Join"; 562 } 563 564 public static class LineItemReceivingStatuses{ 565 public static final String IN_PROCESS = "INPR"; 566 public static final String AWAITING_PO_OPEN_STATUS = "APOO"; 567 public static final String COMPLETE = "CMPT"; 568 public static final String CANCELLED = "CANC"; 569 } 570 571 public static class CorrectionReceivingDocumentStrings{ 572 public static final String NOTE_QUESTION = "CorrectionReceivingNote"; 573 public static final String NOTE_PREFIX = "Note entered while creating Correction Receiving: "; 574 public static final String CORRECTION_RECEIVING_DOCUMENT_TYPE_NAME = "CorrectionReceiving"; 575 public static final String CORRECTION_RECEIVING_CREATION_NOTE_PARAMETER = "CorrectionReceivingNoteParameter"; 576 } 577 578 public static class BulkReceivingDocumentStrings{ 579 public static final String DUPLICATE_BULK_RECEIVING_DOCUMENT_QUESTION = "DuplicateBulkReceiving"; 580 public static final String VENDOR_DATE = "Vendor Date"; 581 public static final String MESSAGE_BULK_RECEIVING_DEFAULT_DOC_DESCRIPTION = "Not associated with a PO"; 582 } 583 584 public static class PREQDocumentsStrings { 585 public static final String DUPLICATE_INVOICE_QUESTION = "PREQDuplicateInvoice"; 586 public static final String HOLD_PREQ_QUESTION = "HoldPREQ"; 587 public static final String CONFIRM_HOLD_QUESTION = "ConfirmHold"; 588 public static final String HOLD_NOTE_PREFIX = "Note entered while placing Payment Request on hold : "; 589 public static final String REMOVE_HOLD_PREQ_QUESTION = "RemoveHoldPREQ"; 590 public static final String CONFIRM_REMOVE_HOLD_QUESTION = "ConfirmRemoveHold"; 591 public static final String REMOVE_HOLD_NOTE_PREFIX = "Note entered while removing a hold on Payment Request : "; 592 public static final String CANCEL_PREQ_QUESTION = "CancelPREQ"; 593 public static final String CONFIRM_CANCEL_QUESTION = "ConfirmCancel"; 594 public static final String CANCEL_NOTE_PREFIX = "Note entered while requesting cancel on Payment Request : "; 595 public static final String REMOVE_CANCEL_PREQ_QUESTION = "RemoveCancelPREQ"; 596 public static final String CONFIRM_REMOVE_CANCEL_QUESTION = "ConfirmRemoveCancel"; 597 public static final String REMOVE_CANCEL_NOTE_PREFIX = "Note entered while removing a request cancel on Payment Request : "; 598 public static final String PURCHASE_ORDER_ID = "Purchase Order Identifier"; 599 public static final String INVOICE_DATE = "Invoice Date"; 600 public static final String INVOICE_NUMBER = "Invoice Number"; 601 public static final String IN_PROCESS = "In Process"; 602 public static final String THRESHOLD_DAYS_OVERRIDE_QUESTION = "Threshold Days Override Question"; 603 public static final String UNUSED_TRADE_IN_QUESTION = "There is an unused trade in amount from PO that you could apply to line item; are you sure you want to proceed ?"; 604 public static final String EXPIRED_ACCOUNT_QUESTION = "There is an expired account on the document; do you want to continue ?"; 605 public static final String ENCUMBER_NEXT_FISCAL_YEAR_QUESTION = "Encumber Next Fiscal Year Question"; 606 public static final String ENCUMBER_PRIOR_FISCAL_YEAR_QUESTION = "Encumber Prior Fiscal Year Question"; 607 public static final String VENDOR_INVOICE_AMOUNT = "Vendor Invoice Amount"; 608 public static final String VENDOR_STATE = "State"; 609 public static final String VENDOR_POSTAL_CODE = "Postal Code"; 610 } 611 612 public static final String BELOW_THE_LINES_PARAMETER = "ADDITIONAL_CHARGES_ITEM_TYPES"; 613 public static final String ITEM_ALLOWS_ZERO = "ITEM_TYPES_ALLOWING_ZERO"; 614 public static final String ITEM_ALLOWS_POSITIVE = "ITEM_TYPES_ALLOWING_POSITIVE"; 615 public static final String ITEM_ALLOWS_NEGATIVE = "ITEM_TYPES_ALLOWING_NEGATIVE"; 616 public static final String ITEM_REQUIRES_USER_ENTERED_DESCRIPTION = "ITEM_TYPES_REQUIRING_USER_ENTERED_DESCRIPTION"; 617 618 public static class ItemFields { 619 public static final String QUANTITY = "Quantity"; 620 public static final String UNIT_OF_MEASURE = "Unit of Measure"; 621 public static final String DESCRIPTION = "Description"; 622 public static final String UNIT_COST = "Unit Cost"; 623 public static final String INVOICE_QUANTITY = "Qty Invoiced"; 624 public static final String OPEN_QUANTITY = "Open Qty"; 625 public static final String INVOICE_EXTENDED_PRICE = "Total Inv Cost"; 626 public static final String COMMODITY_CODE = "Commodity Code"; 627 } 628 629 // ELECTRONIC INVOICE REJECT DOCUMENT 630 public static final String ELECTROINC_INVOICE_REJECT_ACTION_NAME = "ElectronicInvoiceReject"; 631 public static final String REJECT_DOCUMENT_RESEARCH_INCOMPETE = "errors.reject.docucument.research.incomplete"; 632 633 // CREDIT MEMO DOCUMENT 634 public static final String CREDIT_MEMO_ACTION_NAME = "VendorCreditMemo"; 635 636 public static class CreditMemoStatuses { 637 public static final String INITIATE = "INIT"; 638 public static final String IN_PROCESS = "INPR"; 639 public static final String CANCELLED_IN_PROCESS = "CIPR"; 640 public static final String CANCELLED_PRIOR_TO_AP_APPROVAL = "VOID"; 641 public static final String CANCELLED_POST_AP_APPROVE = "CANC"; 642 public static final String COMPLETE = "CMPT"; 643 public static final String AWAITING_ACCOUNTS_PAYABLE_REVIEW = "APAD"; // Waiting for Accounts Payable approval 644 645 public enum STATUS_ORDER { 646 CANCELLED_IN_PROCESS(PurapConstants.CreditMemoStatuses.CANCELLED_IN_PROCESS, false), CANCELLED_PRIOR_TO_AP_APPROVAL(PurapConstants.CreditMemoStatuses.CANCELLED_PRIOR_TO_AP_APPROVAL, false), CANCELLED_POST_AP_APPROVE(PurapConstants.CreditMemoStatuses.CANCELLED_POST_AP_APPROVE, false), INITIATE(PurapConstants.CreditMemoStatuses.INITIATE, true), IN_PROCESS(PurapConstants.CreditMemoStatuses.IN_PROCESS, true), AWAITING_ACCOUNTS_PAYABLE_REVIEW(PurapConstants.CreditMemoStatuses.AWAITING_ACCOUNTS_PAYABLE_REVIEW, false), COMPLETE(PurapConstants.CreditMemoStatuses.COMPLETE, false), ; 647 648 private String statusCode = new String(); 649 private boolean fullEntryAllowed = false; 650 651 STATUS_ORDER(String statusCode, boolean fullEntry) { 652 this.statusCode = statusCode; 653 this.fullEntryAllowed = fullEntry; 654 } 655 656 public static STATUS_ORDER getByStatusCode(String statusCode) { 657 for (STATUS_ORDER status : STATUS_ORDER.values()) { 658 if (StringUtils.equals(status.statusCode, statusCode)) { 659 return status; 660 } 661 } 662 return null; 663 } 664 665 public static boolean isFullDocumentEntryCompleted(String status) { 666 return !getByStatusCode(status).fullEntryAllowed; 667 } 668 669 public static STATUS_ORDER getPreviousStatus(String statusCode) { 670 STATUS_ORDER statusOrder = STATUS_ORDER.getByStatusCode(statusCode); 671 if (statusOrder.ordinal() > 0) { 672 return STATUS_ORDER.values()[statusOrder.ordinal() - 1]; 673 } 674 return null; 675 } 676 677 public static boolean isFirstFullEntryStatus(String statusCode) { 678 // NOTE this won't work if there endsup being two ways to get to the first full entry status (i.e. like AUTO/DEPT 679 // for final) 680 return getByStatusCode(statusCode).fullEntryAllowed && !getPreviousStatus(statusCode).fullEntryAllowed; 681 } 682 } 683 684 public static final String[] STATUSES_ALLOWED_FOR_EXTRACTION = { AWAITING_ACCOUNTS_PAYABLE_REVIEW, COMPLETE }; 685 686 public static final String[] STATUSES_POTENTIALLY_ACTIVE = { IN_PROCESS, AWAITING_ACCOUNTS_PAYABLE_REVIEW }; 687 688 public static final Set CANCELLED_STATUSES = new HashSet(); 689 public static final Set STATUSES_DISALLOWING_HOLD = new HashSet(); 690 public static final Set STATUSES_NOT_REQUIRING_ENTRY_REVERSAL = new HashSet(); 691 static { 692 CANCELLED_STATUSES.add(CANCELLED_IN_PROCESS); 693 CANCELLED_STATUSES.add(CANCELLED_PRIOR_TO_AP_APPROVAL); 694 CANCELLED_STATUSES.add(CANCELLED_POST_AP_APPROVE); 695 696 STATUSES_DISALLOWING_HOLD.add(INITIATE); 697 STATUSES_DISALLOWING_HOLD.add(IN_PROCESS); 698 STATUSES_DISALLOWING_HOLD.addAll(Arrays.asList(CANCELLED_STATUSES.toArray(new String[CANCELLED_STATUSES.size()]))); 699 700 STATUSES_NOT_REQUIRING_ENTRY_REVERSAL.add(INITIATE); 701 STATUSES_NOT_REQUIRING_ENTRY_REVERSAL.add(IN_PROCESS); 702 STATUSES_NOT_REQUIRING_ENTRY_REVERSAL.addAll(Arrays.asList(CANCELLED_STATUSES.toArray(new String[CANCELLED_STATUSES.size()]))); 703 } 704 } 705 706 public static class CMDocumentsStrings { 707 public static final String DUPLICATE_CREDIT_MEMO_QUESTION = "CMDuplicateInvoice"; 708 public static final String HOLD_CM_QUESTION = "HoldCM"; 709 public static final String HOLD_NOTE_PREFIX = "Note entered while placing Credit Memo on hold: "; 710 public static final String CANCEL_CM_QUESTION = "CancelCM"; 711 public static final String REMOVE_HOLD_CM_QUESTION = "RemoveCM"; 712 public static final String REMOVE_HOLD_NOTE_PREFIX = "Note entered while removing hold on Credit Memo: "; 713 } 714 715 public static final class CREDIT_MEMO_TYPE_LABELS { 716 public static final String TYPE_PO = "PO"; 717 public static final String TYPE_PREQ = "PREQ"; 718 public static final String TYPE_VENDOR = "Vendor"; 719 720 } 721 722 private static final HashMap<String, Class> uncopyableFields() { 723 HashMap<String, Class> fields = new HashMap<String, Class>(); 724 fields.put(KFSConstants.VERSION_NUMBER, null); 725 fields.put("LOG", null); 726 fields.put(KFSPropertyConstants.GENERAL_LEDGER_PENDING_ENTRIES, null); 727 fields.put(PurapPropertyConstants.CAPITAL_ASSET_ITEM_IDENTIFIER, null); 728 fields.put(PurapPropertyConstants.CAPITAL_ASSET_SYSTEM_IDENTIFIER, null); 729 fields.put("serialVersionUID", null); 730 return fields; 731 } 732 733 /* 734 * Fields that shouldn't be copied by our reflective copy method. This should only contain fields that are known throughout 735 * objects not item/doc specific ones 736 */ 737 public static final HashMap<String, Class> KNOWN_UNCOPYABLE_FIELDS = uncopyableFields(); 738 739 private static final HashMap<String, Class> uncopyableItemFields() { 740 HashMap<String, Class> fields = new HashMap<String, Class>(); 741 fields.put(PurapPropertyConstants.ITEM_IDENTIFIER, null); 742 fields.put(PurapPropertyConstants.ACCOUNTS, null); 743 return fields; 744 } 745 746 /* 747 * Fields that shouldn't be copied by our reflective copy method. This should only contain fields that are known throughout 748 * objects not item/doc specific ones 749 */ 750 public static final HashMap<String, Class> ITEM_UNCOPYABLE_FIELDS = uncopyableItemFields(); 751 752 private static final HashMap<String, Class> uncopyablePREQItemFields() { 753 HashMap<String, Class> fields = new HashMap<String, Class>(ITEM_UNCOPYABLE_FIELDS); 754 fields.put(PurapPropertyConstants.QUANTITY, null); 755 fields.put(PurapPropertyConstants.EXTENDED_PRICE, null); 756 fields.put(PurapPropertyConstants.ITEM_TAX_AMOUNT, null); 757 fields.put(PurapPropertyConstants.ITEM_SALES_TAX_AMOUNT, null); 758 return fields; 759 } 760 761 /* 762 * fields that shouldn't be copied on PREQ item 763 */ 764 public static final HashMap<String, Class> PREQ_ITEM_UNCOPYABLE_FIELDS = uncopyablePREQItemFields(); 765 766 public static final Map<String, Class> uncopyableFieldsForPurchaseOrder() { 767 Map<String, Class> returnMap = new HashMap<String, Class>(); 768 returnMap.put(KFSPropertyConstants.DOCUMENT_NUMBER, null); 769 returnMap.put(PurapPropertyConstants.ITEM_IDENTIFIER, PurchaseOrderItem.class); 770 returnMap.put(PurapPropertyConstants.ACCOUNT_IDENTIFIER, PurchaseOrderAccount.class); 771 returnMap.put(PurapPropertyConstants.PURCHASE_ORDER_VENDOR_QUOTE_IDENTIFIER, PurchaseOrderVendorQuote.class); 772 returnMap.put("relatedRequisitionViews", PurchasingAccountsPayableDocumentBase.class); 773 returnMap.put("relatedPurchaseOrderViews", PurchasingAccountsPayableDocumentBase.class); 774 returnMap.put("relatedPaymentRequestViews", PurchasingAccountsPayableDocumentBase.class); 775 returnMap.put("relatedCreditMemoViews", PurchasingAccountsPayableDocumentBase.class); 776 returnMap.put("paymentHistoryPaymentRequestViews", PurchasingAccountsPayableDocumentBase.class); 777 returnMap.put("paymentHistoryCreditMemoViews", PurchasingAccountsPayableDocumentBase.class); 778 return returnMap; 779 } 780 781 public static final Map<String, Class> UNCOPYABLE_FIELDS_FOR_PO = uncopyableFieldsForPurchaseOrder(); 782 783 public static final Map<String, Class<?>> uncopyableFieldsForSplitPurchaseOrder() { 784 Map<String, Class<?>> returnMap = new HashMap<String, Class<?>>(); 785 returnMap.put(KFSPropertyConstants.DOCUMENT_HEADER, null); 786 returnMap.put(PurapPropertyConstants.PURAP_DOC_ID, null); // We need to have a new PO ID. 787 returnMap.put(PurapPropertyConstants.ITEMS, null); // Items (including additional charges) are to be excluded from the copy. 788 returnMap.put(PurapPropertyConstants.PURCHASE_ORDER_VENDOR_QUOTES, null); 789 returnMap.put(PurapPropertyConstants.PURCHASE_ORDER_QUOTE_INITIALIZATION_DATE, null); 790 returnMap.put(PurapPropertyConstants.PURCHASE_ORDER_QUOTE_AWARDED_DATE, null); 791 returnMap.put(PurapPropertyConstants.PURCHASE_ORDER_QUOTE_DUE_DATE, null); 792 returnMap.put(PurapPropertyConstants.PURCHASE_ORDER_QUOTE_TYPE_CODE, null); 793 returnMap.put(PurapPropertyConstants.PURCHASE_ORDER_QUOTE_VENDOR_NOTE_TEXT, null); 794 return returnMap; 795 } 796 797 public static final Map<String, Class<?>> UNCOPYABLE_FIELDS_FOR_SPLIT_PO = uncopyableFieldsForSplitPurchaseOrder(); 798 799 public static final String PURAP_ORIGIN_CODE = "01"; 800 801 public static final class PurapDocTypeCodes { 802 public static final String PAYMENT_REQUEST_DOCUMENT = "PREQ"; 803 public static final String CREDIT_MEMO_DOCUMENT = "CM"; 804 public static final String PO_DOCUMENT = "PO"; 805 public static final String PO_AMENDMENT_DOCUMENT = "POA"; 806 public static final String PO_CLOSE_DOCUMENT = "POC"; 807 public static final String PO_REOPEN_DOCUMENT = "POR"; 808 public static final String PO_VOID_DOCUMENT = "POV"; 809 } 810 811 public static final Integer PRORATION_SCALE = new Integer(6); 812 public static final Integer CREDITMEMO_PRORATION_SCALE = new Integer(20); 813 814 815 private static HashMap<String, String> getPurapParameterDetailTypeCodes() { 816 HashMap<String, String> map; 817 map = new HashMap<String, String>(); 818 map.put("REQS", RequisitionDocument.class.getName()); 819 map.put("PO", PurchaseOrderDocument.class.getName()); 820 map.put("POC", PurchaseOrderDocument.class.getName()); 821 map.put("POR", PurchaseOrderDocument.class.getName()); 822 map.put("POA", PurchaseOrderDocument.class.getName()); 823 map.put("POPH", PurchaseOrderDocument.class.getName()); 824 map.put("PORH", PurchaseOrderDocument.class.getName()); 825 map.put("PORT", PurchaseOrderDocument.class.getName()); 826 map.put("POV", PurchaseOrderDocument.class.getName()); 827 map.put("POSP", PurchaseOrderDocument.class.getName()); 828 map.put("PREQ", PaymentRequestDocument.class.getName()); 829 map.put("CM", VendorCreditMemoDocument.class.getName()); 830 return map; 831 } 832 833 public static final HashMap<String, String> PURAP_DETAIL_TYPE_CODE_MAP = getPurapParameterDetailTypeCodes(); 834 835 public static class CapitalAssetTabStrings { 836 public static final String SYSTEM_DEFINITION = "Definition: A system is any group of line items added together to create one or more identical assets. Systems are further defined as line items that work together to perform one function. Each of the line items must be necessary for the system to function."; 837 838 public static final String INDIVIDUAL_ASSETS = "IND"; 839 public static final String ONE_SYSTEM = "ONE"; 840 public static final String MULTIPLE_SYSTEMS = "MUL"; 841 public static final String INDIVIDUAL_ASSETS_DESC = "Each of the lines will be capitalized as INDIVIDUAL ASSETS."; 842 public static final String ONE_SYSTEM_DESC = "Line items are being added together to create ONE SYSTEM."; 843 public static final String MULTIPLE_SYSTEMS_DESC = "Any of the line items will be added together to create MULTIPLE SYSTEMS."; 844 public static final String ASSET_DATA = "Asset data is on Item Tab."; 845 846 public static final String QUESTION_SYSTEM_SWITCHING = "question.document.pur.systemTypeSwitching"; 847 public static final String SYSTEM_SWITCHING_QUESTION = "SystemSwitchingQuestion"; 848 } 849 850 public static class NamedDateFormats { 851 public static String CXML_DATE_FORMAT = "CXML_DATE_FORMAT"; 852 public static String CXML_SIMPLE_DATE_FORMAT = "CXML_SIMPLE_DATE_FORMAT"; 853 public static String CXML_SIMPLE_TIME_FORMAT = "CXML_SIMPLE_TIME_FORMAT"; 854 public static String KUALI_DATE_FORMAT = "KUALI_DATE_FORMAT"; 855 public static String KUALI_SIMPLE_DATE_FORMAT = "KUALI_SIMPLE_DATE_FORMAT"; 856 public static String KUALI_SIMPLE_DATE_FORMAT_2 = "KUALI_SIMPLE_DATE_FORMAT_2"; 857 858 } 859 860 /** 861 * Electronic Invoice Constants 862 */ 863 public static class ElectronicInvoice { 864 public static String NO_FILES_PROCESSED_EMAIL_MESSAGE = "No invoice files were processed today. " + "The developers will send notification if this was an error with the load process."; 865 866 public static String[] ITEM_TYPES_REQUIRES_DESCRIPTION = {PurapConstants.ItemTypeCodes.ITEM_TYPE_ITEM_CODE, 867 PurapConstants.ItemTypeCodes.ITEM_TYPE_MISC_CODE}; 868 869 // ELECTRONIC INVOICE REJECT REASON TYPE CODES 870 public static String REJECT_REASON_TYPE_FILE = "FILE"; 871 public static String REJECT_REASON_TYPE_ORDER = "INVC"; 872 873 // ELECTRONIC INVOICE CXML DEPLOYMENT MODE CODE FOR PRODUCTION 874 public static String CXML_DEPLOYMENT_MODE_PRODUCTION = "production"; 875 876 // ELECTRONIC INVOICE SHIPPING DESCRIPTION 877 public static String SHIPPING_DESCRIPTION = "Electronic Invoice Shipping"; 878 public static String DEFAULT_BELOW_LINE_ITEM_DESCRIPTION = "Electronically entered amount"; 879 880 public final static String DEFAULT_SHIPPING_DESCRIPTION = "Shipping"; 881 public final static String DEFAULT_SPECIAL_HANDLING_DESCRIPTION = "Handling"; 882 883 public static String CXML_ADDRESS_SHIP_TO_ROLE_ID = "shipTo"; 884 public static String CXML_ADDRESS_BILL_TO_ROLE_ID = "billTo"; 885 public static String CXML_ADDRESS_REMIT_TO_ROLE_ID = "remitTo"; 886 887 // name of our default address name we use (null for first available) 888 public static String CXML_ADDRESS_SHIP_TO_NAME = null; 889 public static String CXML_ADDRESS_BILL_TO_NAME = null; 890 public static String CXML_ADDRESS_REMIT_TO_NAME = null; 891 892 /** 893 * Here is a list of reject reason type codes 894 */ 895 public final static String DUNS_INVALID = "INDU"; 896 public final static String INVOICE_ID_EMPTY = "IIDE"; 897 public final static String INVOICE_DATE_GREATER = "IDAG"; 898 public final static String INVOICE_DATE_INVALID = "IDIV"; 899 public final static String INFORMATION_ONLY = "INFO"; 900 public final static String FILE_FORMAT_INVALID = "INFF"; 901 public final static String HEADER_INVOICE_IND_ON = "HIIO"; 902 public final static String INVOICE_ORDERS_NOT_FOUND = "NOIV"; 903 public final static String DUNS_NOT_FOUND = "NODU"; 904 public final static String ITEM_MAPPING_NOT_AVAILABLE = "IMNA"; 905 public final static String DISCOUNT_SUMMARY_AMT_MISMATCH = "DSAM"; 906 public final static String SPL_HANDLING_SUMMARY_AMT_MISMATCH = "SSAM"; 907 public final static String SHIPPING_SUMMARY_AMT_MISMATCH = "SHSA"; 908 public final static String ITEM_TYPE_NAME_NOT_AVAILABLE = "ITNA"; 909 public final static String INVALID_NUMBER_FORMAT = "NFEX"; 910 public final static String PO_ID_EMPTY = "POIE"; 911 public final static String PO_ID_INVALID_FORMAT = "POII"; 912 public final static String PO_NOT_EXISTS = "PONE"; 913 public final static String PO_VENDOR_NOT_MATCHES_WITH_INVOICE_VENDOR = "PVNM"; 914 public final static String PO_NOT_OPEN = "PONO"; 915 public final static String NO_MATCHING_PO_ITEM = "IMLI"; 916 public final static String DUPLIATE_INVOICE_LINE_ITEM = "ICSL"; 917 public final static String INACTIVE_LINE_ITEM = "ILIA"; 918 public final static String CATALOG_NUMBER_MISMATCH = "IICN"; 919 public final static String UNIT_OF_MEASURE_MISMATCH = "IUOM"; 920 public final static String OUTSTANDING_ENCUMBERED_QTY_AVAILABLE = "UEOQ"; 921 public final static String INVOICE_QTY_EMPTY = "IIQE"; 922 public final static String PO_ITEM_QTY_LESSTHAN_INVOICE_ITEM_QTY = "PILI"; 923 public final static String OUTSTANDING_ENCUMBERED_AMT_AVAILABLE = "UEAA"; 924 public final static String PO_ITEM_AMT_LESSTHAN_INVOICE_ITEM_AMT = "PAIA"; 925 public final static String PO_COST_SOURCE_EMPTY = "CSEM"; 926 public final static String INVOICE_AMT_GREATER_THAN_UPPER_VARIANCE = "AGUV"; 927 public final static String INVOICE_AMT_LESSER_THAN_LOWER_VARIANCE = "ALLV"; 928 public final static String SALES_TAX_AMT_LESSER_THAN_LOWER_VARIANCE = "STLV"; 929 public final static String SALES_TAX_AMT_GREATER_THAN_UPPER_VARIANCE = "STUV"; 930 public final static String TAX_SUMMARY_AMT_EXISTS = "STNV"; 931 public final static String TAX_SUMMARY_AMT_MISMATCH = "TSAM"; 932 public final static String INVOICE_ORDER_DUPLICATE = "EIDU"; 933 934 public final static String PREQ_WORKLOW_EXCEPTION = "PRWE"; 935 public final static String PREQ_DISCOUNT_ERROR = "PRDE"; 936 public final static String PREQ_ROUTING_FAILURE = "PRRF"; 937 public final static String PREQ_ROUTING_VALIDATION_ERROR = "PRVE"; 938 public final static String ERROR_ADDING_SCHEMA = "EASC"; 939 940 941 public static class RejectDocumentFields{ 942 public final static String INVOICE_FILE_NUMBER = "invoiceFileNumber"; 943 public final static String INVOICE_FILE_DATE = "invoiceFileDate"; 944 945 //VendorID? 946 947 public final static String VENDOR_DUNS_NUMBER = "vendorDunsNumber"; 948 public final static String INVOICE_PO_ID = "invoiceOrderPurchaseOrderIdentifier"; 949 public final static String INVOICE_ITEM_LINE_NUMBER = "invoiceItemLineNumber"; 950 public final static String INVOICE_ITEM_QUANTITY = "invoiceItemQuantity"; 951 public final static String INVOICE_ITEM_UOM = "invoiceItemUnitOfMeasureCode"; 952 public final static String INVOICE_ITEM_CATALOG_NUMBER = "invoiceItemCatalogNumber"; 953 public final static String INVOICE_ITEM_UNIT_PRICE = "invoiceItemUnitPrice"; 954 public final static String INVOICE_ITEM_SUBTOTAL_MAT = "invoiceItemSubTotalAmount"; 955 public final static String INVOICE_ITEM_TAX_AMT = "invoiceItemTaxAmount"; 956 public final static String INVOICE_ITEM_SPL_HANDLING_AMT = "invoiceItemSpecialHandlingAmount"; 957 public final static String INVOICE_ITEM_SHIPPING_AMT = "invoiceItemShippingAmount"; 958 public final static String INVOICE_ITEM_DISCOUNT_AMT = "invoiceItemDiscountAmount"; 959 public final static String INVOICE_ITEM_NET_AMT = "invoiceItemNetAmount"; 960 961 } 962 963 } 964 965 public static String PRODUCTION_ENVIRONMENT = "PRD"; 966 967 public static String FAX_TEST_PHONE_NUMBER = "FAX_TEST_PHONE_NUMBER"; 968 969 public static final String ELECTRONIC_INVOICE_FILE_TYPE_INDENTIFIER = "electronicInvoiceInputFileType"; 970 public static final String B2B_PO_RESPONSE_FILE_TYPE_INDENTIFIER = "b2bPOResponseFileType"; 971 public static final String B2B_PUNCH_OUT_ORDER_FILE_TYPE_INDENTIFIER = "b2bPunchOutOrderFileType"; 972 public static final String B2B_PUNCH_OUT_RESPONSE_FILE_TYPE_INDENTIFIER = "b2bPunchOutResponseFileType"; 973 974 public static class CapitalAssetAvailability { 975 public static final String NONE = "NONE"; 976 public static final String ONCE = "ONCE"; 977 public static final String EACH = "EACH"; 978 } 979 980 public static class CapitalAssetSystemTypes{ 981 public static final String ONE_SYSTEM = "ONE"; 982 public static final String INDIVIDUAL = "IND"; 983 public static final String MULTIPLE = "MUL"; 984 } 985 986 public static final class CAMS_REQUIREDNESS_FIELDS { 987 private static final Map<String, String> getRequirednessFieldsByParameterNames() { 988 Map<String, String> fieldsByParameterNames = new HashMap<String, String>(); 989 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_ASSET_NUMBER_ON_REQUISITION, "itemCapitalAssets.capitalAssetNumber"); 990 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_ASSET_TRANSACTION_TYPE_ON_REQUISITION, "capitalAssetTransactionTypeCode"); 991 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_ASSET_TYPE_ON_REQUISITION, "capitalAssetTypeCode"); 992 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_COMMENTS_ON_REQUISITION, "capitalAssetNoteText"); 993 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_DESCRIPTION_ON_REQUISITION, "capitalAssetSystemDescription"); 994 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_LOCATIONS_ADDRESS_ON_REQUISITION, "capitalAssetLocations.capitalAssetLine1Address"); 995 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_LOCATIONS_QUANTITY_ON_REQUISITION, "capitalAssetLocations.itemQuantity"); 996 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_MANUFACTURER_ON_REQUISITION, "capitalAssetManufacturerName"); 997 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_MODEL_ON_REQUISITION, "capitalAssetModelDescription"); 998 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_NOT_CURRENT_FISCAL_YEAR_ON_REQUISITION, "capitalAssetNotReceivedCurrentFiscalYearIndicator"); 999 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_NUMBER_OF_ASSETS_ON_REQUISITION, "capitalAssetCountAssetNumber"); 1000 1001 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_ASSET_NUMBER_ON_PURCHASE_ORDER, "itemCapitalAssets.capitalAssetNumber"); 1002 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_ASSET_TRANSACTION_TYPE_ON_PURCHASE_ORDER, "capitalAssetTransactionTypeCode"); 1003 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_ASSET_TYPE_ON_PURCHASE_ORDER, "capitalAssetTypeCode"); 1004 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_COMMENTS_ON_PURCHASE_ORDER, "capitalAssetNoteText"); 1005 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_DESCRIPTION_ON_PURCHASE_ORDER, "capitalAssetSystemDescription"); 1006 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_LOCATIONS_ADDRESS_ON_PURCHASE_ORDER, "capitalAssetLocations.capitalAssetLine1Address"); 1007 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_LOCATIONS_QUANTITY_ON_PURCHASE_ORDER, "capitalAssetLocations.itemQuantity"); 1008 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_MANUFACTURER_ON_PURCHASE_ORDER, "capitalAssetManufacturerName"); 1009 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_MODEL_ON_PURCHASE_ORDER, "capitalAssetModelDescription"); 1010 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_NOT_CURRENT_FISCAL_YEAR_ON_PURCHASE_ORDER, "capitalAssetNotReceivedCurrentFiscalYearIndicator"); 1011 fieldsByParameterNames.put(PurapParameterConstants.CapitalAsset.CHARTS_REQUIRING_NUMBER_OF_ASSETS_ON_PURCHASE_ORDER, "capitalAssetCountAssetNumber"); 1012 1013 return Collections.unmodifiableMap(fieldsByParameterNames); 1014 } 1015 1016 public static final Map<String, String> REQUIREDNESS_FIELDS_BY_PARAMETER_NAMES = getRequirednessFieldsByParameterNames(); 1017 } 1018 1019 public static class CapitalAssetSystemStates{ 1020 public static final String NEW = "NEW"; 1021 public static final String MODIFY = "MOD"; 1022 } 1023 1024 public static final class CAMS_AVAILABILITY_MATRIX { 1025 1026 public static final List<AvailabilityMatrix> MATRIX_LIST = getAllFromAvailabilityMatrix(); 1027 1028 private static List<AvailabilityMatrix> getAllFromAvailabilityMatrix() { 1029 List<AvailabilityMatrix> result = new ArrayList<AvailabilityMatrix>(); 1030 result.add(AvailabilityMatrix.TRAN_TYPE_ONE_NEW); 1031 result.add(AvailabilityMatrix.TRAN_TYPE_ONE_MOD); 1032 result.add(AvailabilityMatrix.TRAN_TYPE_IND_NEW); 1033 result.add(AvailabilityMatrix.TRAN_TYPE_IND_MOD); 1034 result.add(AvailabilityMatrix.TRAN_TYPE_MULT_NEW); 1035 result.add(AvailabilityMatrix.TRAN_TYPE_MULT_MOD); 1036 1037 result.add(AvailabilityMatrix.ASSET_NUMBER_ONE_NEW); 1038 result.add(AvailabilityMatrix.ASSET_NUMBER_ONE_MOD); 1039 result.add(AvailabilityMatrix.ASSET_NUMBER_IND_NEW); 1040 result.add(AvailabilityMatrix.ASSET_NUMBER_IND_MOD); 1041 result.add(AvailabilityMatrix.ASSET_NUMBER_MULT_NEW); 1042 result.add(AvailabilityMatrix.ASSET_NUMBER_MULT_MOD); 1043 1044 result.add(AvailabilityMatrix.COMMENTS_ONE_NEW); 1045 result.add(AvailabilityMatrix.COMMENTS_ONE_MOD); 1046 result.add(AvailabilityMatrix.COMMENTS_IND_NEW); 1047 result.add(AvailabilityMatrix.COMMENTS_IND_MOD); 1048 result.add(AvailabilityMatrix.COMMENTS_MULT_NEW); 1049 result.add(AvailabilityMatrix.COMMENTS_MULT_MOD); 1050 1051 result.add(AvailabilityMatrix.NOT_CURRENT_FY_ONE_NEW); 1052 result.add(AvailabilityMatrix.NOT_CURRENT_FY_ONE_MOD); 1053 result.add(AvailabilityMatrix.NOT_CURRENT_FY_IND_NEW); 1054 result.add(AvailabilityMatrix.NOT_CURRENT_FY_IND_MOD); 1055 result.add(AvailabilityMatrix.NOT_CURRENT_FY_MULT_NEW); 1056 result.add(AvailabilityMatrix.NOT_CURRENT_FY_MULT_MOD); 1057 1058 result.add(AvailabilityMatrix.ASSET_TYPE_ONE_NEW); 1059 result.add(AvailabilityMatrix.ASSET_TYPE_ONE_MOD); 1060 result.add(AvailabilityMatrix.ASSET_TYPE_IND_NEW); 1061 result.add(AvailabilityMatrix.ASSET_TYPE_IND_MOD); 1062 result.add(AvailabilityMatrix.ASSET_TYPE_MULT_NEW); 1063 result.add(AvailabilityMatrix.ASSET_TYPE_MULT_MOD); 1064 1065 result.add(AvailabilityMatrix.MANUFACTURER_ONE_NEW); 1066 result.add(AvailabilityMatrix.MANUFACTURER_ONE_MOD); 1067 result.add(AvailabilityMatrix.MANUFACTURER_IND_NEW); 1068 result.add(AvailabilityMatrix.MANUFACTURER_IND_MOD); 1069 result.add(AvailabilityMatrix.MANUFACTURER_MULT_NEW); 1070 result.add(AvailabilityMatrix.MANUFACTURER_MULT_MOD); 1071 1072 result.add(AvailabilityMatrix.MODEL_ONE_NEW); 1073 result.add(AvailabilityMatrix.MODEL_ONE_MOD); 1074 result.add(AvailabilityMatrix.MODEL_IND_NEW); 1075 result.add(AvailabilityMatrix.MODEL_IND_MOD); 1076 result.add(AvailabilityMatrix.MODEL_MULT_NEW); 1077 result.add(AvailabilityMatrix.MODEL_MULT_MOD); 1078 1079 result.add(AvailabilityMatrix.DESCRIPTION_ONE_NEW); 1080 result.add(AvailabilityMatrix.DESCRIPTION_ONE_MOD); 1081 result.add(AvailabilityMatrix.DESCRIPTION_IND_NEW); 1082 result.add(AvailabilityMatrix.DESCRIPTION_IND_MOD); 1083 result.add(AvailabilityMatrix.DESCRIPTION_MULT_NEW); 1084 result.add(AvailabilityMatrix.DESCRIPTION_MULT_MOD); 1085 1086 result.add(AvailabilityMatrix.LOC_QUANTITY_ONE_NEW); 1087 result.add(AvailabilityMatrix.LOC_QUANTITY_ONE_MOD); 1088 result.add(AvailabilityMatrix.LOC_QUANTITY_IND_NEW); 1089 result.add(AvailabilityMatrix.LOC_QUANTITY_IND_MOD); 1090 result.add(AvailabilityMatrix.LOC_QUANTITY_MULT_NEW); 1091 result.add(AvailabilityMatrix.LOC_QUANTITY_MULT_MOD); 1092 1093 result.add(AvailabilityMatrix.LOC_ADDRESS_ONE_NEW); 1094 result.add(AvailabilityMatrix.LOC_ADDRESS_ONE_MOD); 1095 result.add(AvailabilityMatrix.LOC_ADDRESS_IND_NEW); 1096 result.add(AvailabilityMatrix.LOC_ADDRESS_IND_MOD); 1097 result.add(AvailabilityMatrix.LOC_ADDRESS_MULT_NEW); 1098 result.add(AvailabilityMatrix.LOC_ADDRESS_MULT_MOD); 1099 1100 result.add(AvailabilityMatrix.HOW_MANY_ASSETS_ONE_NEW); 1101 result.add(AvailabilityMatrix.HOW_MANY_ASSETS_ONE_MOD); 1102 result.add(AvailabilityMatrix.HOW_MANY_ASSETS_IND_NEW); 1103 result.add(AvailabilityMatrix.HOW_MANY_ASSETS_IND_MOD); 1104 result.add(AvailabilityMatrix.HOW_MANY_ASSETS_MULT_NEW); 1105 result.add(AvailabilityMatrix.HOW_MANY_ASSETS_MULT_MOD); 1106 1107 return result; 1108 } 1109 } 1110 1111 public static final class CAMSWarningStatuses { 1112 public static final Set<String> REQUISITION_STATUS_WARNING_NO_CAMS_DATA = getRequisitionStatusCAMSWarnings(); 1113 public static final Set<String> PURCHASEORDER_STATUS_WARNING_NO_CAMS_DATA = getPurchaseOrderStatusCAMSWarnings(); 1114 public static final Set<String> PAYMENT_REQUEST_STATUS_WARNING_NO_CAMS_DATA = getPurchaseOrderStatusCAMSWarnings(); 1115 public static final Set<String> CREDIT_MEMO_STATUS_WARNING_NO_CAMS_DATA = getPurchaseOrderStatusCAMSWarnings(); 1116 1117 private static HashSet<String> getRequisitionStatusCAMSWarnings() { 1118 HashSet<String> statuses = new HashSet<String>(); 1119 statuses.add(RequisitionStatuses.IN_PROCESS); 1120 statuses.add(RequisitionStatuses.AWAIT_CONTENT_REVIEW); 1121 statuses.add(RequisitionStatuses.AWAIT_FISCAL_REVIEW); 1122 return statuses; 1123 } 1124 private static HashSet<String> getPurchaseOrderStatusCAMSWarnings() { 1125 HashSet<String> statuses = new HashSet<String>(); 1126 statuses.add(PurchaseOrderStatuses.IN_PROCESS); 1127 statuses.add(PurchaseOrderStatuses.AWAIT_PURCHASING_REVIEW); 1128 return statuses; 1129 } 1130 private static HashSet<String> getPaymentRequestStatusCAMSWarnings() { 1131 HashSet<String> statuses = new HashSet<String>(); 1132 statuses.add(PaymentRequestStatuses.IN_PROCESS); 1133 return statuses; 1134 } 1135 private static HashSet<String> getCreditMemoStatusCAMSWarnings() { 1136 HashSet<String> statuses = new HashSet<String>(); 1137 statuses.add(CreditMemoStatuses.IN_PROCESS); 1138 return statuses; 1139 } 1140 } 1141 1142 public static final class AttachmentTypeCodes{ 1143 public static final String ATTACHMENT_TYPE_CM_IMAGE = "Credit Memo Image"; 1144 public static final String ATTACHMENT_TYPE_CONTRACTS = "Contracts"; 1145 public static final String ATTACHMENT_TYPE_CONTRACT_AMENDMENTS = "Contract Amendments"; 1146 public static final String ATTACHMENT_TYPE_OTHER = "Other"; 1147 public static final String ATTACHMENT_TYPE_OTHER_RESTRICTED = "Other - Restricted"; 1148 public static final String ATTACHMENT_TYPE_INVOICE_IMAGE = "Invoice Image"; 1149 public static final String ATTACHMENT_TYPE_QUOTE = "Quotes"; 1150 public static final String ATTACHMENT_TYPE_RFP = "RFPs"; 1151 public static final String ATTACHMENT_TYPE_RFP_RESPONSES = "RFP Responses"; 1152 public static final String ATTACHMENT_TYPE_TAX_DOCUMENTS = "Tax Documents"; 1153 } 1154 1155 1156 }