<?xml version="1.0" encoding="UTF-8" ?>
<!--
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.
-->

<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
    <description>Product Component Maintenance Services</description>
    <vendor>OFBiz</vendor>
    <version>1.0</version>

    <!-- Product Category Maintenance Services -->
    <service name="copyCategoryProductMembers" engine="simple" transaction-timeout="600"
            location="component://product/script/org/ofbiz/product/category/CategoryServices.xml" invoke="copyCategoryProductMembers" auth="true">
        <description>Copy Product Members from one Category to Another, optionally filtering by the given valid date (otherwise no date filtering done), and optionally recursing (if recurse=Y) down the from category</description>
        <attribute name="productCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="productCategoryIdTo" type="String" mode="IN" optional="false"/>
        <attribute name="validDate" type="Timestamp" mode="IN" optional="true"/>
        <attribute name="recurse" type="String" mode="IN" optional="true"/>
    </service>
    <service name="expireAllCategoryProductMembers" engine="simple"
            location="component://product/script/org/ofbiz/product/category/CategoryServices.xml" invoke="expireAllCategoryProductMembers" auth="true">
        <description>Expire All Product Members in a Category optionally using the thruDate specified as the expire date (now timestamp used by default)</description>
        <attribute name="productCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="thruDate" type="Timestamp" mode="IN" optional="true"/>
    </service>
    <service name="removeExpiredCategoryProductMembers" engine="simple"
            location="component://product/script/org/ofbiz/product/category/CategoryServices.xml" invoke="removeExpiredCategoryProductMembers" auth="true">
        <description>Remove All Expired Product Members in a Category, optionally uses the valid date instead of now to determine if the member has expired</description>
        <attribute name="productCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="validDate" type="Timestamp" mode="IN" optional="true"/>
    </service>

    <!-- ========================================= -->
    <!-- Some Product Maintenance Utility Services -->
    <!-- ========================================= -->
    <!-- These are generally run manually, but some can be run on a schedule as well. -->
    <service name="discVirtualsWithDiscVariants" engine="java"
            location="org.ofbiz.product.product.ProductUtilServices" invoke="discVirtualsWithDiscVariants" auth="true" transaction-timeout="36000" require-new-transaction="true">
        <description>Discontinue Virtuals With Discontinued Variants</description>
    </service>
    <service name="removeCategoryMembersOfDiscProducts" engine="java"
            location="org.ofbiz.product.product.ProductUtilServices" invoke="removeCategoryMembersOfDiscProducts" auth="true" transaction-timeout="36000" require-new-transaction="true">
        <description>Remove Category Members Of Discontinued Products</description>
    </service>
    <service name="removeDuplicateOpenEndedCategoryMembers" engine="java"
            location="org.ofbiz.product.product.ProductUtilServices" invoke="removeDuplicateOpenEndedCategoryMembers" auth="true" transaction-timeout="36000" require-new-transaction="true">
        <description>Remove Duplicate, excluding fromDate, Category Members that have no thruDate</description>
    </service>

    <service name="makeStandAloneFromSingleVariantVirtuals" engine="java"
            location="org.ofbiz.product.product.ProductUtilServices" invoke="makeStandAloneFromSingleVariantVirtuals" auth="true" transaction-timeout="36000" require-new-transaction="true">
        <description>Make Stand Alone From Single Variant Virtuals</description>
    </service>
    <service name="mergeVirtualWithSingleVariant" engine="java"
            location="org.ofbiz.product.product.ProductUtilServices" invoke="mergeVirtualWithSingleVariant" auth="true" transaction-timeout="36000" require-new-transaction="true">
        <description>A service to be called by the make stand alone service to do the operation for one product.</description>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="removeOld" type="Boolean" mode="IN" optional="false"/>
        <attribute name="test" type="Boolean" mode="IN" optional="true"/>
    </service>

    <service name="setAllProductImageNames" engine="java"
            location="org.ofbiz.product.product.ProductUtilServices" invoke="setAllProductImageNames" auth="true" transaction-timeout="36000" require-new-transaction="true">
        <description>Set All Product Image Names; pattern example: /images/products/${size}/${productId}.jpg; defaults to values in the catalog.properties file (image.url.prefix + / + image.filename.format)</description>
        <attribute name="pattern" type="String" mode="IN" optional="true"/>
    </service>
    <service name="clearAllVirtualProductImageNames" engine="java"
            location="org.ofbiz.product.product.ProductUtilServices" invoke="clearAllVirtualProductImageNames" auth="true" transaction-timeout="36000" require-new-transaction="true">
        <description>Set All Product Image Names</description>
    </service>

    <service name="attachProductFeaturesToCategory" engine="java"
            location="org.ofbiz.product.product.ProductUtilServices" invoke="attachProductFeaturesToCategory" auth="true" transaction-timeout="36000" require-new-transaction="true">
        <description>Attach Product Features To Category Through Groups</description>
        <attribute name="productCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="doSubCategories" type="String" mode="IN" optional="true"/>
    </service>

    <!-- Check Urls exists or not related services -->
    <service name="checkImageUrlForAllCategories" engine="simple"
      location="component://product/script/org/ofbiz/product/catalog/CatalogServices.xml" invoke="checkImageUrlForAllCategories" transaction-timeout="36000">
        <description>check For Image Urls exists or not for all categories</description>
        <attribute name="topCategory" type="String" mode="IN" optional="true"/>
        <attribute name="excludeEmpty" type="Boolean" mode="IN" optional="true"/>
        <attribute name="categoriesMap" type="java.util.Map" mode="OUT" optional="true"/>
    </service>

    <service name="getAllCategories" engine="simple"
      location="component://product/script/org/ofbiz/product/catalog/CatalogServices.xml" invoke="getAllCategories">
        <description>Get all categories of a category </description>
        <attribute name="topCategory" type="String" mode="IN" optional="true"/>
        <attribute name="categories" type="java.util.List" mode="OUT" optional="true"/>
    </service>

    <service name="getRelatedCategories" engine="simple"
      location="component://product/script/org/ofbiz/product/catalog/CatalogServices.xml" invoke="getRelatedCategories">
        <description>Get all related categories of a category </description>
        <attribute name="parentProductCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="categories" type="java.util.List" mode="INOUT" optional="true"/>
    </service>
    
    <service name="getCategoryTrail" engine="java"
      location="org.ofbiz.product.category.CategoryWorker" invoke="getCategoryTrail">
        <description> Returns a complete category trail - can be used for exporting proper category trees. 
        This is mostly useful when used in combination with breadcrumbs,  for building a facetted index tree, 
        or to export a category tree for migration to another system.
        Will create the tree from root point to categoryId. 
        
        This service is not meant to be run on every request.
        Its best use is to generate the trail every so often and store somewhere (a lucene/solr tree, entities, cache or so). 
        </description>
        <attribute name="productCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="trail" type="java.util.List" mode="OUT" optional="true"/>
    </service>

    <service name="checkImageUrlForCategoryAndProduct" engine="simple"
      location="component://product/script/org/ofbiz/product/catalog/CatalogServices.xml" invoke="checkImageUrlForCategoryAndProduct">
        <description>check For Image Urls exists or not for category</description>
        <attribute name="categoryId" type="String" mode="IN" optional="false"/>
        <attribute name="fileNotExists" type="java.util.List" mode="OUT" optional="true"/>
        <attribute name="fileExists" type="java.util.List" mode="OUT" optional="true"/>
    </service>
    <service name="checkImageUrlForCategory" engine="simple"
      location="component://product/script/org/ofbiz/product/catalog/CatalogServices.xml" invoke="checkImageUrlForCategory">
        <description>check For Image Urls exists or not For Product</description>
        <attribute name="categoryId" type="String" mode="IN" optional="false"/>
        <attribute name="filesImageMap" type="java.util.Map" mode="OUT" optional="true"/>
    </service>
    <service name="checkImageUrlForProduct" engine="simple"
      location="component://product/script/org/ofbiz/product/catalog/CatalogServices.xml" invoke="checkImageUrlForProduct">
        <description>check For Image Urls exists or not For Product</description>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="filesImageMap" type="java.util.Map" mode="OUT" optional="true"/>
    </service>

    <service name="checkImageUrl" engine="simple"
      location="component://product/script/org/ofbiz/product/catalog/CatalogServices.xml" invoke="checkImageUrl">
        <description>check For Image Urls exists or not</description>
        <attribute name="imageUrl" type="String" mode="IN" optional="false"/>
        <attribute name="isExists" type="String" mode="OUT" optional="true"/>
    </service>

    <!-- ============================== -->
    <!-- Promotion Maintenance Services -->
    <!-- ============================== -->
    <service name="purgeOldStoreAutoPromos" engine="java"
            location="org.ofbiz.product.promo.PromoServices" invoke="purgeOldStoreAutoPromos" auth="true">
        <description>Purge Expired ProductStorePromoAppl Records, by store or global if productStoreId is null</description>
        <attribute name="productStoreId" type="String" mode="IN" optional="true"/>
    </service>

    <!-- ============================== -->
    <!-- Inventory Maintenance Services -->
    <!-- ============================== -->
    <service name="updateOldInventoryToDetailAll" engine="simple"
            location="component://product/script/org/ofbiz/product/inventory/InventoryServices.xml" invoke="updateOldInventoryToDetailAll" auth="true">
        <description>Update Old Inventory To Detail</description>
    </service>
    <service name="updateOldInventoryToDetailSingle" engine="simple" require-new-transaction="true"
            location="component://product/script/org/ofbiz/product/inventory/InventoryServices.xml" invoke="updateOldInventoryToDetailSingle" auth="true">
        <description>Update Old Inventory To Detail</description>
        <attribute name="inventoryItem" type="org.ofbiz.entity.GenericValue" mode="IN" optional="false"/>
    </service>
</services>
