<?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.
-->
<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../content/dtd/docbook.xsd"
    xmlns="http://docbook.org/ns/docbook">
    <title>Handle Ebay Product Inventory screen.</title>
    <para>
        This screen allows the user to manage reserve products from ofbiz inventory to their ebay store and then user can use this screen to upload that products into ebay product inventory on ebay site following an ebay account. In this screen user can manage their ebay store inventory from ofbiz, the screen will show status of product on ebay product inventory (Product Avialabel to list, active, sold, unsold and scheduled</para>
        <section>
        <title>This function used for : </title>
        <orderedlist>
            <listitem><para>Handle ofbiz inventory and ebay product inventory follow an ebay account</para></listitem>
            <listitem><para>Reserve product from ofbiz inventory</para></listitem>
            <listitem><para>Upload product to  ebay product inventory</para></listitem>
            <listitem><para>Show status of product(QTY, Avialable to listing, scheduled, sold, unsold and active listing) </para></listitem>
            <listitem><para>Show Quantity of product</para></listitem>
        </orderedlist>
        </section>
        <section>
        <title>How to go to reserve product?</title>
        <orderedlist>
            <listitem><para>Go to inventory Details section.</para></listitem>
            <listitem><para>Press on "Reserve product inventory" button</para></listitem>
            <listitem><para>The system will show reserve product screen</para></listitem>
        </orderedlist>
        </section>
        <section>
        <title>How to update inventoy and status on ebay site?</title>
        <orderedlist>
            <listitem><para>Go to inventory Details section.</para></listitem>
            <listitem><para>Press on "Update to ebay inventory" button</para></listitem>
            <listitem><para>The system will update product and qty to ebay inventory on ebay site</para></listitem>
        </orderedlist>
        </section>
        <section>
        <title>Fields Description : </title>
        <orderedlist>
            <listitem><para>ProductId (productId in ofbiz catalog)</para></listitem>
            <listitem><para>ProductName (Name of product)</para></listitem>
            <listitem><para>Qty Reserved (Quantity of product that user reserved from ofbiz inventory)  </para></listitem>
            <listitem><para>Available To Promise Listing (Quantity of product that user can use create listing)</para></listitem> 
            <listitem><para>Ebay Product Id (this field used for keep productId from ebay inventory because  Ebay site not allow user to create productId to their system)</para></listitem>
            <listitem><para>Active Listing (Quantity of product that user can use create listing)</para></listitem> 
            <listitem><para>sold (Quantity of product that sold)</para></listitem> 
            <listitem><para>un Sold (Quantity of product that still un sold)</para></listitem> 
            <listitem><para>reserved date</para></listitem> 
            <listitem><para>note: The user can not create ebay listing and sell product on ebay site greater than amount they made a reservation only.</para></listitem>
        </orderedlist>
        </section>
        <section>
        <title>Note : </title>
        <orderedlist>
            <listitem><para>Please subscribed to Selling Manager Pro before you use this function because ebay product inventory will open when you start selling manager pro on ebay site</para></listitem>
            <listitem><para><link xl:href="http://pages.ebay.com/selling_manager_pro">To subscribe for production site </link></para></listitem>
            <listitem><para><link xl:href="http://k2b-bulk.sandbox.ebay.com/ws/eBayISAPI.dll?MyeBaySellingPendingListings">To upgrade store level for sandbox site </link>(The normal level for sandbox store is basic, the user should upgrade to premium when you want to use inventory function with ebay sandbox.)</para></listitem>
            <listitem><para>How to upgrade sandbox store level?</para></listitem>
            <listitem><para>Click on the link "To upgrade store level for sandbox site"</para></listitem>
            <listitem><para>Go to "Selling Related links" section</para></listitem>
            <listitem><para>Click on "Edit my eBay store"</para></listitem>
            <listitem><para>Page Manage my eBay store will show up</para></listitem>
            <listitem><para>Go to "Store Usage Information" section</para></listitem>
            <listitem><para>Click upgrade at "Subscription level" then select "Premium Store" and "Selling Manager Pro" submit.</para></listitem>
        </orderedlist>
        </section>
</section>
