docs: @Indexable(type = IndexableType.REINDEX)
  	@Override
  	public CommercePriceList upsertCommercePriceList(
  			long commercePriceListId, long commerceCurrencyId,
  			long parentCommercePriceListId, String name, double priority,
  			int displayDateMonth, int displayDateDay, int displayDateYear,
  			int displayDateHour, int displayDateMinute, int expirationDateMonth,
  			int expirationDateDay, int expirationDateYear,
  			int expirationDateHour, int expirationDateMinute,
  			String externalReferenceCode, boolean neverExpire,
  			ServiceContext serviceContext)
  		throws PortalException {
  
  		// Update
  
  		if (commercePriceListId > 0) {
  			try {
  				return updateCommercePriceList(
  					commercePriceListId, commerceCurrencyId,
  					parentCommercePriceListId, name, priority, displayDateMonth,
  					displayDateDay, displayDateYear, displayDateHour,
  					displayDateMinute, expirationDateMonth, expirationDateDay,
  					expirationDateYear, expirationDateHour,
  					expirationDateMinute, neverExpire, serviceContext);
  			}
  			catch (NoSuchPriceListException nsple) {
  				if (_log.isDebugEnabled()) {
  					_log.debug(
  						"Unable to find price list with ID: " +
  							commercePriceListId);
  				}
  			}
  		}
  
  		if (Validator.isNotNull(externalReferenceCode)) {
  			CommercePriceList commercePriceList =
  				commercePriceListPersistence.fetchByC_ERC(
  					serviceContext.getCompanyId(), externalReferenceCode);
  
  			if (commercePriceList != null) {
  				return updateCommercePriceList(
  					commercePriceList.getCommercePriceListId(),
  					commerceCurrencyId, parentCommercePriceListId, name,
  					priority, displayDateMonth, displayDateDay, displayDateYear,
  					displayDateHour, displayDateMinute, expirationDateMonth,
  					expirationDateDay, expirationDateYear, expirationDateHour,
  					expirationDateMinute, neverExpire, serviceContext);
  			}
  		}
  
  		// Add
  
  		return addCommercePriceList(
  			commerceCurrencyId, parentCommercePriceListId, name, priority,
  			displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
  			displayDateMinute, expirationDateMonth, expirationDateDay,
  			expirationDateYear, expirationDateHour, expirationDateMinute,
  			externalReferenceCode, neverExpire, serviceContext);
  	}