<?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 View Services -->
    <service name="getProduct" engine="java"
            location="org.apache.ofbiz.product.product.ProductServices" invoke="prodFindProduct">
        <description>Gets a product value object.</description>
        <attribute name="productId" type="String" mode="IN"/>
        <attribute name="product" type="org.apache.ofbiz.entity.GenericValue" mode="OUT"/>
    </service>
    <service name="getProductVariant" engine="java"
            location="org.apache.ofbiz.product.product.ProductServices" invoke="prodFindSelectedVariant">
        <description>Gets a list of variant product value objects.</description>
        <attribute name="productId" type="String" mode="IN"/>
        <attribute name="selectedFeatures" type="java.util.Map" mode="IN"/>
        <attribute name="products" type="java.util.List" mode="OUT"/>
    </service>
    <service name="getProductFeatureSet" engine="java"
            location="org.apache.ofbiz.product.product.ProductServices" invoke="prodFindFeatureTypes">
        <description>Gets a Set of product features (distinct)</description>
        <attribute name="productId" type="String" mode="IN"/>
        <attribute name="productFeatureApplTypeId" type="String" mode="IN" optional="true"/>
        <attribute name="featureSet" type="java.util.Set" mode="OUT"/>
    </service>
    <service name="getProductVariantTree" engine="java"
            location="org.apache.ofbiz.product.product.ProductServices" invoke="prodMakeFeatureTree">
        <description>Gets a tree of product variants based on a virtual product and a list of features.</description>
        <attribute name="productId" type="String" mode="IN"/>
        <attribute name="featureOrder" type="java.util.Collection" mode="IN"/>
        <attribute name="productStoreId" type="String" mode="IN" optional="true"/>
        <attribute name="checkInventory" type="Boolean" mode="IN" default-value="true" optional="true"/>
        <attribute name="variantTree" type="java.util.Map" mode="OUT" optional="true"/>
        <attribute name="unavailableVariants" type="java.util.List" mode="OUT" optional="true"/>
        <attribute name="variantSample" type="java.util.Map" mode="OUT" optional="true"/>
        <attribute name="virtualVariant" type="java.util.List" mode="OUT" optional="true"/>
    </service>
    <service name="getAllProductVariants" engine="java"
            location="org.apache.ofbiz.product.product.ProductServices" invoke="prodFindAllVariants">
        <description>Gets a Collection of products from a 'virtual' parent product.</description>
        <attribute name="productId" type="String" mode="IN"/>
        <attribute name="assocProducts" type="java.util.Collection" mode="OUT"/>
    </service>
    <service name="getAssociatedProducts" engine="java"
            location="org.apache.ofbiz.product.product.ProductServices" invoke="prodFindAssociatedByType">
        <description>
            Finds associated products by the defined type.  Only one of either productId or productIdTo can be supplied,
            not both.  If bidirectional is set to true then the passed in productId will be treated as both a productId
            and a productIdTo (defaults to false).  If sortDescending is true then assocProducts will be returned sorted
            by sequenceNum descending (defaults to false).
        </description>
        <attribute name="productId" type="String" mode="IN" optional="true"/>
        <attribute name="productIdTo" type="String" mode="IN" optional="true"/>
        <attribute name="checkViewAllow" type="Boolean" mode="IN" optional="true"/>
        <attribute name="prodCatalogId" type="String" mode="IN" optional="true"/>
        <attribute name="type" type="String" mode="IN"/>
        <attribute name="bidirectional" type="Boolean" mode="IN" optional="true"/>
        <attribute name="sortDescending" type="Boolean" mode="IN" optional="true"/>
        <attribute name="assocProducts" type="java.util.Collection" mode="OUT" optional="true"/>
    </service>
    <service name="getProductFeatures" engine="java"
            location="org.apache.ofbiz.product.product.ProductServices" invoke="prodGetFeatures">
        <description>Gets a Collection of product features (ProductFeatureAndAppl) for a product.</description>
        <attribute name="productId" type="String" mode="IN"/>
        <attribute name="type" type="String" mode="IN" optional="true"/>
        <attribute name="distinct" type="String" mode="IN" optional="true"/>
        <attribute name="productFeatures" type="java.util.Collection" mode="OUT"/>
    </service>
    <service name="getSuppliersForProduct" engine="java"
            location="org.apache.ofbiz.product.supplier.SupplierProductServices" invoke="getSuppliersForProduct">
        <description>Finds a list of SupplierProduct entity values based on a productId.
              If other parameters are given, they are used to filter the list down.</description>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="partyId" type="String" mode="IN" optional="true"/>
        <attribute name="currencyUomId" type="String" mode="IN" optional="true"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="canDropShip" type="String" mode="IN" optional="true"/>
        <attribute name="supplierProducts" type="java.util.List" mode="OUT" optional="false"/>
    </service>
    <service name="convertFeaturesForSupplier" engine="java"
        location = "org.apache.ofbiz.product.supplier.SupplierProductServices" invoke="convertFeaturesForSupplier">
        <description>Takes a list of product feature (either ProductFeature or ProductFeatureAndAppl) and converts
            each one for the supplier specified by partyId, changing the description and idCode</description>
        <attribute type="java.util.Collection" mode="IN" name="productFeatures" optional="false"/>
        <attribute type="String" mode="IN" name="partyId" optional="false"/>
        <attribute type="java.util.Collection" mode="OUT" name="convertedProductFeatures"/>
    </service>

    <!-- Category View Services -->
    <service name="getProductCategoryMembers" engine="java"
            location="org.apache.ofbiz.product.category.CategoryServices" invoke="getCategoryMembers">
        <description>Gets ProductCategoryMembers for the category_id</description>
        <attribute name="categoryId" type="String" mode="IN"/>
        <attribute name="category" type="org.apache.ofbiz.entity.GenericValue" mode="OUT"/>
        <attribute name="categoryMembers" type="java.util.Collection" mode="OUT"/>
    </service>
    
    <service name="getAssociatedProductsList" engine="simple" auth="false"
        location="component://product/minilang/product/category/CategoryServices.xml" invoke="getAssociatedProductsList">
        <description>Set the product options for selected product category, mostly used by getDependentDropdownValues</description>
        <attribute name="productCategoryId" mode="IN" type="String" optional="false"/>
        <attribute name="products" mode="OUT" type="java.util.List"/>
    </service>
    
    <service name="getPreviousNextProducts" engine="java"
        location="org.apache.ofbiz.product.category.CategoryServices" invoke="getPreviousNextProducts">
        <description>Gets the previous and next product Ids.</description>
        <attribute name="categoryId" type="String" mode="IN"/>
        <attribute name="productId" type="String" mode="IN"/>
        <attribute name="activeOnly" type="Boolean" mode="IN" optional="true"/>
        <attribute name="introductionDateLimit" type="java.sql.Timestamp" mode="IN" optional="true"/>
        <attribute name="releaseDateLimit" type="java.sql.Timestamp" mode="IN" optional="true"/>
        <attribute name="orderByFields" type="List" mode="IN" optional="true"/>
        <attribute name="category" type="org.apache.ofbiz.entity.GenericValue" mode="OUT" optional="true"/>
        <attribute name="previousProductId" type="String" mode="OUT" optional="true"/>
        <attribute name="nextProductId" type="String" mode="OUT" optional="true"/>
    </service>
    <service name="getProductCategoryAndLimitedMembers" engine="java"
            location="org.apache.ofbiz.product.category.CategoryServices" invoke="getProductCategoryAndLimitedMembers">
        <description>Gets a productCategory and a Collection of associated productCategoryMembers and calculates limiting parameters</description>
        <attribute name="productCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="prodCatalogId" type="String" mode="IN" optional="true"/>
        <attribute name="defaultViewSize" type="Integer" mode="IN" optional="false"/>
        <attribute name="limitView" type="Boolean" mode="IN" optional="false"/>
        <attribute name="checkViewAllow" type="Boolean" mode="IN" optional="true"/>
        <attribute name="viewIndexString" type="String" mode="IN" optional="true"/>
        <attribute name="viewSizeString" type="String" mode="IN" optional="true"/>
        <attribute name="useCacheForMembers" type="Boolean" mode="IN" optional="true"/>
        <attribute name="activeOnly" type="Boolean" mode="IN" optional="true"/>
        <attribute name="introductionDateLimit" type="java.sql.Timestamp" mode="IN" optional="true"/>
        <attribute name="releaseDateLimit" type="java.sql.Timestamp" mode="IN" optional="true"/>
        <attribute name="orderByFields" type="List" mode="IN" optional="true"/>
        <attribute name="productStoreId" mode="IN" type="String" optional="true"/>
        <attribute name="productCategory" type="org.apache.ofbiz.entity.GenericValue" mode="OUT" optional="true"/>
        <attribute name="productCategoryMembers" type="java.util.Collection" mode="OUT" optional="true"/> <!-- this list will only contain the limited members if limitView=true -->
        <attribute name="viewIndex" type="Integer" mode="OUT" optional="false"/> <!-- this is a 1 based index, ie the first results are in index 1 -->
        <attribute name="viewSize" type="Integer" mode="OUT" optional="false"/>
        <attribute name="lowIndex" type="Integer" mode="OUT" optional="false"/>
        <attribute name="highIndex" type="Integer" mode="OUT" optional="false"/>
        <attribute name="listSize" type="Integer" mode="OUT" optional="false"/>
    </service>
</services>
