###############################################################################
# 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.
###############################################################################
####
# OFBiz Auto Update To Google Base Setting
####
# Google Base Configuration

# separate each value by comma(',') with no space and setting of each productStore are ordered from left to right.
# for example: 
# autoUpdateGoogleBase.productStoreId=9000,9001
# autoUpdateGoogleBase.productStore.option.outOfStock=Y,N
# autoUpdateGoogleBase.productStore.option.backInStock=N,Y
# it means productStoreId:9000 has outOfStock option:Y and backInStock option:N
# and productStoreId:9001 has outOfStock option:N and backInStock option:Y
autoUpdateGoogleBase.productStoreId=9000

# productStore.option.outOfStock
# default value: "Y"
autoUpdateGoogleBase.productStore.option.outOfStock=Y
# productStore.option.backIntoStock
# default value: "Y"
autoUpdateGoogleBase.productStore.option.backInStock=Y

# productStore.webSiteUrl of productStore; if null, it will get from standardContentPrefix field of WebSite entity
# default value: http://demo.ofbiz.org
autoUpdateGoogleBase.productStore.webSiteUrl=http://demo.ofbiz.org
# productStore.actionType including: "insert", "update", "delete"
# default value: "insert"
autoUpdateGoogleBase.productStore.actionType=insert
# productStore.statusId including "draft", "publish"
# default value: "draft"
autoUpdateGoogleBase.productStore.statusId=draft
# productStore.testMode including "Y", "N"
# default value: "N"
autoUpdateGoogleBase.productStore.testMode=N
# productStore.webSiteMountPoint 
# default value: ecommerce
autoUpdateGoogleBase.productStore.webSiteMountPoint=ecommerce
# productStore.countryCode including "US", "GB", "DE" 
# default value: "US"
autoUpdateGoogleBase.productStore.countryCode=US
# productStore.trackingCodeId 
# default value: _NA_
autoUpdateGoogleBase.productStore.trackingCodeId=_NA_
# productStore.autoUpdateGoogleBase
# default value: "N"
autoUpdateGoogleBase.productStore.allowRecommended=N
