###############################################################################
# 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-trunk.ofbiz.apache.org
autoUpdateGoogleBase.productStore.webSiteUrl=http://demo-trunk.ofbiz.apache.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
