###############################################################################
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
###############################################################################

# ==== Catalog Application Properties ====


# -- Image upload path on the server
image.server.path=${sys:getProperty('ofbiz.home')}/framework/images/webapp/images

# -- The prefix to put on auto-generated image urls (can be relative or absolute, whatever you want)
image.url.prefix=/images
image.filename.format=${location}/${id}/${type}
image.filename.additionalviewsize.format=${location}/${id}/${viewtype}/${sizetype}

# -- Which default top category to display... --
top.category.default=CATALOG1
all.product.category=CATALOG1

# Flag to re-active products when they are received
reactivate.product.from.receipt=Y

# Image upload path on the image management
image.management.path=${sys:getProperty('ofbiz.home')}/framework/images/webapp/images/products/management
image.management.url=/images/products/management
image.management.nameofthumbnail=-100
image.management.autoApproveImage=Y
image.management.multipleApproval=N

# Automatic product price currency conversion
convertProductPriceCurrency=false
