Commit f6508de2 authored by Boxiang Sun's avatar Boxiang Sun

erp5_user_tutorial: Update user-Howto.Create.and.Manage.Products

parent 4d8abc29
<section class="master">
<h1>How to create products</h1>
<footer>
by the <a href="http://www.osoe-project.org/contact">OSOE Project</a>.
</footer>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td colspan="3">&lt;span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment"&gt;init&lt;/span&gt;</td>
</tr>
<tr>
<td>openAndWait</td>
<td>${base_url}/Zuite_setUpProductTest</td>
<td></td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>Init Ok</td>
<td></td>
</tr>
<tr class="" style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"&gt; Wait for activities &lt;/span&gt;</td>
</tr>
<tr class="" style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user"&gt;Login As Functional Test User&lt;/span&gt;</td>
</tr>
</tbody>
</table>
</test>
</section><section class="">
<h1>This guide will teach you:</h1>
<ul>
<li>How to create products/services</li>
<li>How to validate a product/service</li>
<li>How to create a complex product</li>
</ul>
<details open="open">
<p>In this tutorial, you will learn how to create and manage products and services in ERP5. This process has a similar structure as the previous three tutorials for persons and organisations, which means you can try doing it by yourself or follow us along. This is the fundamental three step procedure :</p><p>
<strong>Create</strong>
a new document.
<br>
<strong>Fill</strong>
the different tabs with appropriate characteristics.
<br>
<strong>Validate</strong>
your data.
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody></tbody>
</table>
</test>
</section><section class="illustration">
<h1>Scenario</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Led.Characteristics?format=png" title="Scenario" alt="Scenario">
<p>
<strong>As electronics specialist, the core of your business is to sell high quality components, like this LED for example, wich is your star product.</strong>
</p><details open="open">
<p>We created an example to help you understand the different steps of the product creation process. Your company is an electronic component supplier/specialist, selling LED lights, which are little amps for electronic equipment.</p><p>We gathered some hypothetical characteristics, which will help you fill in the blanks, but please notice that these characteristics are not all in chronological order,and you will have to sort them.</p><h3>Characteristics</h3>
<p>Title : Red Led</p><p>Reference : RL01</p><p>Electronic component</p><p>Taxable</p><p>Purchase price : 0,5€</p><p>Sales price: 1€</p><p>Validity : 01/01/2010</p><p>Supplier: EC China</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody></tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Go to the « new » tab</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.New.Tab?format=png" title="Go to &quot;New&quot; tab" alt="Go to &quot;New&quot; tab">
<details open="open">
<p>You are now familiar with creating new objects in ERP5 as it was covered in the first tutorials. Product creation works the same way :</p><p>
<strong>First reach the “new” tab of the home menu</strong>
which helps you create objects in ERP5. To reach the home menu, click on “ERP5” on the bread crumb.
</p><p>As you can see on the screenshot, the only difference is that we are now using a new module called PDM : Product Data Management. With this module, you will be able to manage your commercial offers based on products and services. You will find further details in this tutorial and by browsing the application.</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody></tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Click on product</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Productss.Click.On.Products?format=png" title="Click on product" alt="Click on product">
<details open="open">
<p>
To create a product, simply <strong>click on “product”</strong>
.
</p><p>This will create a new product, save it, and open the related product sheet, from which you'll be able to manage the details of the product, as described below.</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>selectAndWait</td>
<td>//select[@name="select_module"]</td>
<td>Products</td>
</tr>
<tr>
<td>selectAndWait</td>
<td>//select[@name="select_action"]</td>
<td>Add Product</td>
</tr>
<tr>
<td>verifyText</td>
<td>//div[@id="transition_message"]</td>
<td>Object created.</td>
</tr>
<tr>
<td>verifyText</td>
<td>//li[@class="selected"]/a/span</td>
<td>View</td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Fill the “View” tab</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Fill.View.Tab?format=png" title="Fill the “View” tab" alt="Fill the “View” tab">
<details open="open">
<p>First, please fill the “view” tab, the same way we did for persons and organisations.</p><p>Look on the picture or in the first pages of this tutorial to find the details of the “Red Led”, and try to fill out the “view” tab, which is first step in the detail edition, because not all characteristics belong to this tab.</p><p>
Note that since this product doesn't have any variation of size or price, <strong>in the field "Individual Variation Base Category List", we can not choose "Variation". To do so, please click on the option "Variation", then hold "Ctrl" and click on "Variation" again</strong>
. When you are done, save your data, then you will see the result. Some fields will remain blank, this is not a problem. If a field is compulsory, ERP5 won't accept to save your data until you entered it.
</p><p>This step will create a new product, save it, and open the related product sheet, from which you'll be able to manage the other details of the product, as described below.</p><p>Note: If the product has various purchase/sale prices or various sizes, e.g, a book with two different formats (big and small format), the price will be different, then you will have to choose "Variation" in the "Individual Variation Base Category List ", so you can set different prices in "Purchase" and "Sale" tabs later. We will show you examples in the next part "Complex products-Variations" in this tutorial.</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr style="opacity: 1; z-index: 0;" class="">
<td>type</td>
<td>//input[@name="field_my_title"]</td>
<td>ZUITE-TEST-PRODUCT-PRODUCT-001</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_my_reference"]</td>
<td>RL 01</td>
</tr>
<tr>
<td>select</td>
<td>//select[@name="field_my_base_contribution_list"]</td>
<td>Taxable</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>select</td>
<td>//select[@name="subfield_field_my_quantity_unit_list_default:list"]</td>
<td>Unit/Piece</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name="field_my_title"]</td>
<td>ZUITE-TEST-PRODUCT-PRODUCT-001</td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Fill the "Purchase" information</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Fill.Purchase.Tab?format=png" title="Purchase Information" alt="Purchase Information">
<details open="open">
<p>
With the characteristics given in the example, we are able to fill out 5 fields of the <strong>“Purchase”</strong>
tab. The reason for this is simple, ERP5 divides the data until it has reached its canonical form, which means that “Purchase price : 0.5€/piece” carries 3 values rather than 2 as it may seem: Each
<u>piece</u> (1) is sold <u>0.5</u> (2) <u>Euro</u> (3).
</p><p>We recommend you to always type commentaries about your products, and other data stored in ERP5.</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>clickAndWait</td>
<td>link=Purchase</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_year"]</td>
<td>2014</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_month"]</td>
<td>10</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_day"]</td>
<td>01</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_my_purchase_supply_line_base_price"]</td>
<td>0.50</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_my_purchase_supply_line_priced_quantity"]</td>
<td>1.0</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_year"]</td>
<td>2014</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_month"]</td>
<td>10</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_day"]</td>
<td>01</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name="field_my_purchase_supply_line_base_price"]</td>
<td>0.50</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name="field_my_purchase_supply_line_priced_quantity"]</td>
<td>1.0</td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Fill the "Sale" information</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Fill.Sale.Tab?format=png" title="Fill the Sales information" alt="Fill the Sales information">
<details open="open">
<p>
Now that we have filled in the correct purchase information, it is time to give details about your selling price, by <strong>filling the “Sale” tab</strong>
.
</p><p>
Please, click on the <strong>“Sale” tab</strong>
, and try to fill the form with the following details :
</p><p>Example : You sell your LED at a price of 1€ / piece. The sales price shall remain stable until 1st of January 2014. Many companies are used to purchasing this product from you.</p><p>There are four other fields to fill about the sales price , as shown in the screenshot : “Sales price”, “currency”, “Priced quantity” and “Price validity”.</p><p>Note that the “Recipient” field has been left blank. This field is only used if the product is sold to one customer exclusively. As the Red LED is our star product and is sold to many different customers, this field remains blank.</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>clickAndWait</td>
<td>link=Sale</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_my_sale_supply_line_base_price"]</td>
<td>1</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_my_sale_supply_line_priced_quantity"]</td>
<td>1.0</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>select</td>
<td>//select[@name="field_my_sale_supply_line_price_currency"]</td>
<td>EUR</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>About the “Stock” tab</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Stock.Tab?format=png" title="About the “Stock” tab" alt="About the “Stock” tab">
<details open="open">
<p>
Managing stock levels is another crucial business activity, and ERP5 allows you to track it smoothly thanks to the “inventory” function. As we will demonstrate in another tutorial, you can make an inventory to establish your stock levels for each product. If you do it correctly, your stock will be kept up to date by the ERP5 system. You can find <strong>this very information in the “Stock” tab of your product</strong>
. Each time you purchase or sell this product, ERP5 automatically updates its stock level.
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody></tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Validate</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Action.Validate?format=png" title="Validate" alt="Validate">
<details open="open">
<p>Now that you have defined your product, it is time to validate it.</p><p>To do so, please follow the same steps as to validate a person or an organisation. The goal of this validation is to inform your co workers that the information you provide can be taken for granted. If you are not sure about the data you entered, do not validate, but rather leave it as a draft to avoid confusion!</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>selectAndWait</td>
<td>//select[@name="select_action"]</td>
<td>Validate</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@id="dialog_submit_button"]</td>
<td></td>
</tr>
<tr>
<td>verifyText</td>
<td>//li[@class="selected"]/a/span</td>
<td>Sale</td>
</tr>
<tr>
<td>verifyText</td>
<td>//div[@id="transition_message"]</td>
<td>Status changed.</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=View</td>
<td></td>
</tr>
<tr>
<td>verifyText</td>
<td>//div[@title="The current state of the document."]/div[1]</td>
<td>Validated</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>storeLocation</td>
<td>product</td>
<td></td>
</tr>
<tr class="" style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"&gt; Wait for activities &lt;/span&gt;</td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Complex products-Variations (1): Individual Variation Base Category List</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Complex.Product.Variation?format=png" title="Complex products - Variations" alt="Complex products - Variations">
<details open="open">
<p>In ERP5, you can create products that are much more complex than standard products we have just created. For example, you might need to enter an unique reference, to store different product variations. We will see here the example of a book, that is available in different formats, a big and a small format. Of course, the prices are different, be it the purchase or sale price. But we would like to have only one reference for this product, displaying both the big and small format with their respective information such as prices and stock level.</p><p>
When you create the new product, in the "View" tab, <strong>choose "Variation" in the "Individual Variation Base Category List"</strong>
. When this is done, you can save and jump to next page.
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>openAndWait</td>
<td>${product}</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Complex products-Variations (2): Add Product Individual Variation</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Add.Product.Individual.Variation?format=png" title="Add “Product individual variation”" alt="Add “Product individual variation”">
<details open="open">
<p>
In this second step, we will add individual product variations. In order to do this,<strong>open the Action item</strong>
list and
<strong>choose “Add Product Individual Variation”</strong>
. A new document will be created for this variation and you will be redirected to it in order to edit it.
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>selectAndWait</td>
<td>//select[@name="select_action"]</td>
<td>Add Product Individual Variation</td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Complex products-Variations (3): Name your variation(s)</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Name.Your.Variation?format=png" title="Name your variation(s)" alt="Name your variation(s)">
<details open="open">
<p>
This is your product individual variation document that has been created. You can <strong>set a name</strong>
for it and
<strong>save</strong>
when you are done.
</p><p>
After you are finished,
<strong>go back to the product document</strong>
by clicking on your product name in the Bread Crumb. Repeat these two steps to create another product individual variation document "Small Format".
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr style="opacity: 1; z-index: 0;" class="">
<td>type</td>
<td>//input[@name="field_my_title"]</td>
<td>ZUITE-PRODUCT-VARIATION-001</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=ZUITE-TEST-PRODUCT-PRODUCT-001</td>
<td></td>
</tr>
<tr>
<td>selectAndWait</td>
<td>//select[@name="select_action"]</td>
<td>Add Product Individual Variation</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>type</td>
<td>//input[@name='field_my_title']</td>
<td>ZUITE-PRODUCT-VARIATION-002</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Go back to your product</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Go.Back.To.Product?format=png" title="Go back to your product" alt="Go back to your product">
<details open="open">
<p>
Here we are back on the Product document. As you can see on the bottom of the document, a <strong>list of Product Individual Variations is displayed</strong>
. You can click on any of them if you want to edit their name. But if you want to set their purchase and sales prices, please jump to next page of this tutorial.
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr style="opacity: 1; z-index: 0;" class="">
<td>clickAndWait</td>
<td>link=ZUITE-TEST-PRODUCT-PRODUCT-001</td>
<td></td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>verifyValue</td>
<td>//input[@name='field_my_title']</td>
<td>ZUITE-TEST-PRODUCT-PRODUCT-001</td>
</tr>
<tr>
<td>verifyText</td>
<td>//span[@class="listbox-current-page-total-number"]</td>
<td>2 records</td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Set the prices (1)</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Set.The.Prices.1?format=png" title="Set the prices (1)" alt="Set the prices (1)">
<details open="open">
<p>We will now learn how to set the Purchase price of these individual product variations.</p><p>As you can see on the screenshot, the variations you created in the previous steps are not displayed here. Indeed, there is a step to take in order for you to be able to set the prices of those variations. Jump to the next page.</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>clickAndWait</td>
<td>link=Purchase</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Set the prices (2)</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Set.The.Prices.2?format=png" title="Set the prices (2)" alt="Set the prices (2)">
<details open="open">
<p>
In the blue area, <strong>click on variation</strong>
and
<strong>click the Save button</strong>
. When you are done, jump to the next page.
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>select</td>
<td>//select[@name='field_my_purchase_supply_line_p_variation_base_category_list']</td>
<td>Variation</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Set the prices (3)</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Set.The.Prices.3?format=png" title="Set the prices (3)" alt="Set the prices (3)">
<details open="open">
<p>
You can see in the red area that the two variations we have created in this tutorial are now displayed on the bottom of the page. You can now set the <strong>purchase price</strong>
of each variation in the appropriate field, and
<strong>click the Save button</strong>
when you are done.
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr style="opacity: 1; z-index: 0;" class="">
<td>type</td>
<td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]</td>
<td>10</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>type</td>
<td>//input[@name="field_matrixbox_base_price_cell_1_0_0"]</td>
<td>20</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>Variation/ZUITE-PRODUCT-VARIATION-001</td>
<td></td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>verifyTextPresent</td>
<td>Variation/ZUITE-PRODUCT-VARIATION-002</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Set the prices (4)</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Set.The.Prices.4?format=png" title="Set the prices (4)" alt="Set the prices (4)">
<details open="open">
<p>
In order to define the Sale Price of your variations, <strong>click on the Sale tab and take the same steps as for the Purchase price</strong>
.Do not forget to save your work when a document is modified.
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr style="opacity: 1; z-index: 0;" class="">
<td>clickAndWait</td>
<td>link=Sale</td>
<td></td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>select</td>
<td>//select[@name='field_my_sale_supply_line_p_variation_base_category_list']</td>
<td>Variation</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>type</td>
<td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]</td>
<td>15</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_matrixbox_base_price_cell_1_0_0"]</td>
<td>25</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Complex prices–Quantity steps (1)</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Complex.Prices.Quantity.Steps.1?format=png" title="Complex prices–Quantity steps (1)" alt="Complex prices–Quantity steps (1)">
<details open="open">
<p>ERP5 also manages Price Quantity Steps. This feature is useful if the price of a product varies with the ordered or sold quantity. In this example, we will set 3 different quantity steps for the purchase and the sale price, whether the quantity is less than 50 units, between 50 and 100 units and more than 100 units. The Quantity step field will help you do this operation. Enter the different quantity steps you need in the Quantity step field, separating each of them by the Return Key of your keyboard. When you are done, click the Save button and jump to the next page.</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>type</td>
<td>//textarea[@name="field_my_sale_supply_line_quantity_step_list"]</td>
<td>50</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Complex prices–Quantity steps (2)</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Complex.Prices.Quantity.Steps.2?format=png" title="Complex prices–Quantity steps (2)Complex prices–Quantity steps (2)Complex prices–Quantity steps (2)" alt="Complex prices–Quantity steps (2)Complex prices–Quantity steps (2)Complex prices–Quantity steps (2)">
<details open="open">
<p>As we are using the product for which we created individual variations, the Quantity steps will be applied to those different variations. As you can see on the picture, for each variation, three price fields are now available. The first column is the unit price for an order of less than 50 pieces, the second column is the unit price for an order between 50 and 100 units, and the column on the right is the unit price for an order of more than 100 pieces. Each line stands for a product individual variation, in our example, big format and small format. Jump to next page.</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr style="opacity: 1; z-index: 0;" class="">
<td>verifyTextPresent</td>
<td>Quantity &lt; 50.0</td>
<td></td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>50.0 &lt;= Quantity</td>
<td></td>
</tr>
</tbody>
</table>
</test>
</section><section class="screenshot">
<h1>Complex prices–Quantity steps (3)</h1>
<img src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Complex.Prices.Quantity.Steps.3?format=png" title="Complex prices–Quantity steps (3)" alt="Complex prices–Quantity steps (3)">
<details open="open">
<p>
<strong>Enter all the unit prices for your variations and quantity steps</strong>
, and when you are done,
<strong>click the Save button</strong>
.
</p><p>
This was the very last step of this tutorial, you should now be able to create and manage products, including product individual variations and quantity steps. We would recommend to be very careful when editing a product, for <strong>the information borne by the product documents will be automatically imported to the orders related to these products</strong>
, which will help you save much time!
</p>
</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>type</td>
<td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]</td>
<td>15</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_matrixbox_base_price_cell_0_1_0"]</td>
<td>14</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_matrixbox_base_price_cell_1_0_0"]</td>
<td>25</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="field_matrixbox_base_price_cell_1_1_0"]</td>
<td>24</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//button[@name="Base_edit:method"]</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name="field_matrixbox_base_price_cell_0_0_0"]</td>
<td>15.00</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>verifyValue</td>
<td>//input[@name="field_matrixbox_base_price_cell_0_1_0"]</td>
<td>14.00</td>
</tr>
<tr style="opacity: 1; z-index: 0;" class="">
<td>verifyValue</td>
<td>//input[@name="field_matrixbox_base_price_cell_1_0_0"]</td>
<td>25.00</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name="field_matrixbox_base_price_cell_1_1_0"]</td>
<td>24.00</td>
</tr>
</tbody>
</table>
</test>
</section><section class="chapter">
<h1>Check you the Products creation</h1>
<details open="open">Now it is time to check the products in the Product Module.</details>
<test>
<table style="display: none;" class="test">
<tbody>
<tr>
<td>open</td>
<td>${base_url}/view</td>
<td></td>
</tr>
<tr>
<td>selectAndWait</td>
<td>//select[@name="select_module"]</td>
<td>Products</td>
</tr>
<tr>
<td>verifyText</td>
<td>//div[@id="breadcrumb"]/a[1]</td>
<td>ERP5</td>
</tr>
<tr>
<td>verifyText</td>
<td>//div[@id="breadcrumb"]/a[2]</td>
<td>Products</td>
</tr>
<tr class="" style="opacity: 1;">
<td colspan="3">&lt;tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=(['title', 'ZUITE-TEST-PRODUCT-PRODUCT-001'],), enter_object=True)"/&gt;</td>
</tr>
<tr>
<td>verifyText</td>
<td>//div[@id="breadcrumb"]/a[3]</td>
<td>ZUITE-TEST-PRODUCT-PRODUCT-001</td>
</tr>
<tr class="" style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager"&gt;Login As Manager&lt;/span&gt;</td>
</tr>
<tr>
<td>openAndWait</td>
<td>${base_url}/Zuite_tearDownProductTest</td>
<td></td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>Clean Ok</td>
<td></td>
</tr>
<tr class="" style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"&gt; Wait for activities &lt;/span&gt;</td>
</tr>
</tbody>
</table>
</test>
</section>
\ No newline at end of file
<section class="master">
<h1>How to create products</h1>
<footer>by the <a href="http://www.osoe-project.org/contact">OSOE Project</a>.</footer>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td colspan="3">&lt;span metal:use-macro=&quot;container/Zuite_viewTestMacroLibrary/macros/init_test_environment&quot;&gt;init&lt;/span&gt;</td>
</tr>
<tr>
<td>openAndWait</td>
<td>${base_url}/Zuite_setUpProductTest</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>Init Ok</td>
<td>&nbsp;</td>
</tr>
<tr style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro=&quot;container/Zuite_viewTestMacroLibrary/macros/wait_for_activities&quot;&gt; Wait for activities &lt;/span&gt;</td>
</tr>
<tr style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro=&quot;container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user&quot;&gt;Login As Functional Test User&lt;/span&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;New&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot; /&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section>
<h1>This guide will teach you:</h1>
<ul>
<li>How to create products/services</li>
<li>How to validate a product/service</li>
<li>How to create a complex product</li>
</ul>
<details open="open">
<p>In this tutorial, you will learn how to create and manage products and services in ERP5. This process has a similar structure as the previous three tutorials for persons and organisations, which means you can try doing it by yourself or follow us along. This is the fundamental three step procedure :</p>
<p><strong>Create</strong> a new document.<br />
<strong>Fill</strong> the different tabs with appropriate characteristics.<br />
<strong>Validate</strong> your data.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
</tbody>
</table>
</test></section>
<section class="illustration">
<h1>Scenario</h1>
<img alt="Scenario" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Led.Characteristics?format=png" title="Scenario" />
<p><strong>As electronics specialist, the core of your business is to sell high quality components, like this LED for example, wich is your star product.</strong></p>
<details open="open">
<p>We created an example to help you understand the different steps of the product creation process. Your company is an electronic component supplier/specialist, selling LED lights, which are little amps for electronic equipment.</p>
<p>We gathered some hypothetical characteristics, which will help you fill in the blanks, but please notice that these characteristics are not all in chronological order,and you will have to sort them.</p>
<h3>Characteristics</h3>
<p>Title : Red Led</p>
<p>Reference : RL01</p>
<p>Electronic component</p>
<p>Taxable</p>
<p>Purchase price : 0,5&euro;</p>
<p>Sales price: 1&euro;</p>
<p>Validity : 01/01/2010</p>
<p>Supplier: EC China</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Go to the &laquo; new &raquo; tab</h1>
<img alt="Go to &quot;New&quot; tab" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.New.Tab?format=png" title="Go to &quot;New&quot; tab" />
<details open="open">
<p>You are now familiar with creating new objects in ERP5 as it was covered in the first tutorials. Product creation works the same way :</p>
<p><strong>First reach the &ldquo;new&rdquo; tab of the home menu</strong> which helps you create objects in ERP5. To reach the home menu, click on &ldquo;ERP5&rdquo; on the bread crumb.</p>
<p>As you can see on the screenshot, the only difference is that we are now using a new module called PDM : Product Data Management. With this module, you will be able to manage your commercial offers based on products and services. You will find further details in this tutorial and by browsing the application.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Click on product</h1>
<img alt="Click on product" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Productss.Click.On.Products?format=png" title="Click on product" />
<details open="open">
<p>To create a product, simply <strong>click on &ldquo;product&rdquo;</strong> .</p>
<p>This will create a new product, save it, and open the related product sheet, from which you&#39;ll be able to manage the details of the product, as described below.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td>waitForElementPresent</td>
<td>//button[text()=&quot;Product&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>click</td>
<td>//input[@name=&quot;editable&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>click</td>
<td>//button[text()=&quot;Product&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name=&quot;field_my_title&quot;]</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Fill the &ldquo;View&rdquo; tab</h1>
<img alt="Fill the “View” tab" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Fill.View.Tab?format=png" title="Fill the “View” tab" />
<details open="open">
<p>First, please fill the &ldquo;view&rdquo; tab, the same way we did for persons and organisations.</p>
<p>Look on the picture or in the first pages of this tutorial to find the details of the &ldquo;Red Led&rdquo;, and try to fill out the &ldquo;view&rdquo; tab, which is first step in the detail edition, because not all characteristics belong to this tab.</p>
<p>Note that since this product doesn&#39;t have any variation of size or price, <strong>in the field &quot;Individual Variation Base Category List&quot;, we can not choose &quot;Variation&quot;. To do so, please click on the option &quot;Variation&quot;, then hold &quot;Ctrl&quot; and click on &quot;Variation&quot; again</strong> . When you are done, save your data, then you will see the result. Some fields will remain blank, this is not a problem. If a field is compulsory, ERP5 won&#39;t accept to save your data until you entered it.</p>
<p>This step will create a new product, save it, and open the related product sheet, from which you&#39;ll be able to manage the other details of the product, as described below.</p>
<p>Note: If the product has various purchase/sale prices or various sizes, e.g, a book with two different formats (big and small format), the price will be different, then you will have to choose &quot;Variation&quot; in the &quot;Individual Variation Base Category List &quot;, so you can set different prices in &quot;Purchase&quot; and &quot;Sale&quot; tabs later. We will show you examples in the next part &quot;Complex products-Variations&quot; in this tutorial.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr style="opacity: 1; z-index: 0;">
<td>type</td>
<td>//input[@name=&quot;field_my_title&quot;]</td>
<td>ZUITE-TEST-PRODUCT-PRODUCT-001</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_my_reference&quot;]</td>
<td>RL 01</td>
</tr>
<tr>
<td>select</td>
<td>//select[@name=&quot;field_my_base_contribution_list&quot;]</td>
<td>Taxable</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>select</td>
<td>//select[@name=&quot;subfield_field_my_quantity_unit_list_default:list&quot;]</td>
<td>Unit/Piece</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name=&quot;field_my_title&quot;]</td>
<td>ZUITE-TEST-PRODUCT-PRODUCT-001</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Fill the &quot;Purchase&quot; information</h1>
<img alt="Purchase Information" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Fill.Purchase.Tab?format=png" title="Purchase Information" />
<details open="open">
<p>With the characteristics given in the example, we are able to fill out 5 fields of the <strong>&ldquo;Purchase&rdquo;</strong> tab. The reason for this is simple, ERP5 divides the data until it has reached its canonical form, which means that &ldquo;Purchase price : 0.5&euro;/piece&rdquo; carries 3 values rather than 2 as it may seem: Each <u>piece</u> (1) is sold <u>0.5</u> (2) <u>Euro</u> (3).</p>
<p>We recommend you to always type commentaries about your products, and other data stored in ERP5.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;Purchase&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_my_purchase_supply_line_base_price&quot;]</td>
<td>0.50</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_my_purchase_supply_line_priced_quantity&quot;]</td>
<td>1.0</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name=&quot;field_my_purchase_supply_line_base_price&quot;]</td>
<td>0.50</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name=&quot;field_my_purchase_supply_line_priced_quantity&quot;]</td>
<td>1</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Fill the &quot;Sale&quot; information</h1>
<img alt="Fill the Sales information" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Fill.Sale.Tab?format=png" title="Fill the Sales information" />
<details open="open">
<p>Now that we have filled in the correct purchase information, it is time to give details about your selling price, by <strong>filling the &ldquo;Sale&rdquo; tab</strong> .</p>
<p>Please, click on the <strong>&ldquo;Sale&rdquo; tab</strong> , and try to fill the form with the following details :</p>
<p>Example : You sell your LED at a price of 1&euro; / piece. The sales price shall remain stable until 1st of January 2014. Many companies are used to purchasing this product from you.</p>
<p>There are four other fields to fill about the sales price , as shown in the screenshot : &ldquo;Sales price&rdquo;, &ldquo;currency&rdquo;, &ldquo;Priced quantity&rdquo; and &ldquo;Price validity&rdquo;.</p>
<p>Note that the &ldquo;Recipient&rdquo; field has been left blank. This field is only used if the product is sold to one customer exclusively. As the Red LED is our star product and is sold to many different customers, this field remains blank.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;Sale&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_my_sale_supply_line_base_price&quot;]</td>
<td>1</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_my_sale_supply_line_priced_quantity&quot;]</td>
<td>1.0</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>select</td>
<td>//select[@name=&quot;field_my_sale_supply_line_price_currency&quot;]</td>
<td>EUR</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>About the &ldquo;Stock&rdquo; tab</h1>
<img alt="About the “Stock” tab" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Stock.Tab?format=png" title="About the “Stock” tab" />
<details open="open">
<p>Managing stock levels is another crucial business activity, and ERP5 allows you to track it smoothly thanks to the &ldquo;inventory&rdquo; function. As we will demonstrate in another tutorial, you can make an inventory to establish your stock levels for each product. If you do it correctly, your stock will be kept up to date by the ERP5 system. You can find <strong>this very information in the &ldquo;Stock&rdquo; tab of your product</strong> . Each time you purchase or sell this product, ERP5 automatically updates its stock level.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Validate</h1>
<img alt="Validate" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Action.Validate?format=png" title="Validate" />
<details open="open">
<p>Now that you have defined your product, it is time to validate it.</p>
<p>To do so, please follow the same steps as to validate a person or an organisation. The goal of this validation is to inform your co workers that the information you provide can be taken for granted. If you are not sure about the data you entered, do not validate, but rather leave it as a draft to avoid confusion!</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
</tbody>
<tbody>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;Validate&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;View&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>verifyText</td>
<td>//p[@id=&quot;field_my_translated_validation_state_title&quot;]</td>
<td>Validated</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>storeLocation</td>
<td>product</td>
<td>&nbsp;</td>
</tr>
<tr style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro=&quot;container/Zuite_viewTestMacroLibrary/macros/wait_for_activities&quot;&gt; Wait for activities &lt;/span&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Complex products-Variations (1): Individual Variation Base Category List</h1>
<img alt="Complex products - Variations" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Complex.Product.Variation?format=png" title="Complex products - Variations" />
<details open="open">
<p>In ERP5, you can create products that are much more complex than standard products we have just created. For example, you might need to enter an unique reference, to store different product variations. We will see here the example of a book, that is available in different formats, a big and a small format. Of course, the prices are different, be it the purchase or sale price. But we would like to have only one reference for this product, displaying both the big and small format with their respective information such as prices and stock level.</p>
<p>When you create the new product, in the &quot;View&quot; tab, <strong>choose &quot;Variation&quot; in the &quot;Individual Variation Base Category List&quot;</strong> . When this is done, you can save and jump to next page.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td>openAndWait</td>
<td>${product}</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Complex products-Variations (2): Add Product Individual Variation</h1>
<img alt="Add “Product individual variation”" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Add.Product.Individual.Variation?format=png" title="Add “Product individual variation”" />
<details open="open">
<p>In this second step, we will add individual product variations. In order to do this,<strong>open the Action item</strong> list and <strong>choose &ldquo;Add Product Individual Variation&rdquo;</strong> . A new document will be created for this variation and you will be redirected to it in order to edit it.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td>click</td>
<td>//a[contains(text(), &quot;Add&quot;)]</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>select</td>
<td>//select[@name=&quot;field_your_select_action&quot;]</td>
<td>Product Individual Variation</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Complex products-Variations (3): Name your variation(s)</h1>
<img alt="Name your variation(s)" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Name.Your.Variation?format=png" title="Name your variation(s)" />
<details open="open">
<p>This is your product individual variation document that has been created. You can <strong>set a name</strong> for it and <strong>save</strong> when you are done.</p>
<p>After you are finished, <strong>go back to the product document</strong> by clicking on your product name in the Bread Crumb. Repeat these two steps to create another product individual variation document &quot;Small Format&quot;.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name=&quot;field_my_title&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>type</td>
<td>//input[@name=&quot;field_my_title&quot;]</td>
<td>ZUITE-PRODUCT-VARIATION-001</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>click</td>
<td>//a[@accesskey=&quot;u&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>click</td>
<td>//a[contains(text(), &quot;Add&quot;)]</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>select</td>
<td>//select[@name=&quot;field_your_select_action&quot;]</td>
<td>Product Individual Variation</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//select[@name=&quot;field_my_variation_base_category&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>select</td>
<td>//select[@name=&quot;field_my_variation_base_category&quot;]</td>
<td>Variation</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>type</td>
<td>//input[@name=&#39;field_my_title&#39;]</td>
<td>ZUITE-PRODUCT-VARIATION-002</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Go back to your product</h1>
<img alt="Go back to your product" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Go.Back.To.Product?format=png" title="Go back to your product" />
<details open="open">
<p>Here we are back on the Product document. As you can see on the bottom of the document, a <strong>list of Product Individual Variations is displayed</strong> . You can click on any of them if you want to edit their name. But if you want to set their purchase and sales prices, please jump to next page of this tutorial.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Set the prices (1)</h1>
<img alt="Set the prices (1)" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Set.The.Prices.1?format=png" title="Set the prices (1)" />
<details open="open">
<p>We will now learn how to set the Purchase price of these individual product variations.</p>
<p>As you can see on the screenshot, the variations you created in the previous steps are not displayed here. Indeed, there is a step to take in order for you to be able to set the prices of those variations. Jump to the next page.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td>click</td>
<td>//a[@accesskey=&quot;u&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;Purchase&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Set the prices (2)</h1>
<img alt="Set the prices (2)" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Set.The.Prices.2?format=png" title="Set the prices (2)" />
<details open="open">
<p>In the blue area, <strong>click on variation</strong> and <strong>click the Save button</strong> . When you are done, jump to the next page.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td>select</td>
<td>//select[@name=&#39;field_my_purchase_supply_line_p_variation_base_category_list&#39;]</td>
<td>Variation</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Set the prices (3)</h1>
<img alt="Set the prices (3)" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Set.The.Prices.3?format=png" title="Set the prices (3)" />
<details open="open">
<p>You can see in the red area that the two variations we have created in this tutorial are now displayed on the bottom of the page. You can now set the <strong>purchase price</strong> of each variation in the appropriate field, and <strong>click the Save button</strong> when you are done.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_0_0_0&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>type</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_0_0_0&quot;]</td>
<td>10</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>type</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_1_0_0&quot;]</td>
<td>20</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>Variation/ZUITE-PRODUCT-VARIATION-001</td>
<td>&nbsp;</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>verifyTextPresent</td>
<td>Variation/ZUITE-PRODUCT-VARIATION-002</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Set the prices (4)</h1>
<img alt="Set the prices (4)" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Set.The.Prices.4?format=png" title="Set the prices (4)" />
<details open="open">
<p>In order to define the Sale Price of your variations, <strong>click on the Sale tab and take the same steps as for the Purchase price</strong> .Do not forget to save your work when a document is modified.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;Sale&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>select</td>
<td>//select[@name=&#39;field_my_sale_supply_line_p_variation_base_category_list&#39;]</td>
<td>Variation</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@name=&quot;field_my_sale_supply_line_quantity_step_list&quot;]</td>
<td>50</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_save&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Complex prices&ndash;Quantity steps (1)</h1>
<img alt="Complex prices–Quantity steps (1)" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Complex.Prices.Quantity.Steps.1?format=png" title="Complex prices–Quantity steps (1)" />
<details open="open">
<p>ERP5 also manages Price Quantity Steps. This feature is useful if the price of a product varies with the ordered or sold quantity. In this example, we will set 3 different quantity steps for the purchase and the sale price, whether the quantity is less than 50 units, between 50 and 100 units and more than 100 units. The Quantity step field will help you do this operation. Enter the different quantity steps you need in the Quantity step field, separating each of them by the Return Key of your keyboard. When you are done, click the Save button and jump to the next page.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;Sale&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_0_0_0&quot;]</td>
<td>&nbsp;</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>type</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_0_0_0&quot;]</td>
<td>15</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_1_0_0&quot;]</td>
<td>25</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Complex prices&ndash;Quantity steps (2)</h1>
<img alt="Complex prices–Quantity steps (2)Complex prices–Quantity steps (2)Complex prices–Quantity steps (2)" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Complex.Prices.Quantity.Steps.2?format=png" title="Complex prices–Quantity steps (2)Complex prices–Quantity steps (2)Complex prices–Quantity steps (2)" />
<details open="open">
<p>As we are using the product for which we created individual variations, the Quantity steps will be applied to those different variations. As you can see on the picture, for each variation, three price fields are now available. The first column is the unit price for an order of less than 50 pieces, the second column is the unit price for an order between 50 and 100 units, and the column on the right is the unit price for an order of more than 100 pieces. Each line stands for a product individual variation, in our example, big format and small format. Jump to next page.</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr style="opacity: 1; z-index: 0;">
<td>verifyTextPresent</td>
<td>Quantity &lt; 50.0</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>50.0 &lt;= Quantity</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
</test></section>
<section class="screenshot">
<h1>Complex prices&ndash;Quantity steps (3)</h1>
<img alt="Complex prices–Quantity steps (3)" src="http://img.erp5.cn/user-Howto.Create.and.Manage.Products.Product.Module.Complex.Prices.Quantity.Steps.3?format=png" title="Complex prices–Quantity steps (3)" />
<details open="open">
<p><strong>Enter all the unit prices for your variations and quantity steps</strong> , and when you are done, <strong>click the Save button</strong> .</p>
<p>This was the very last step of this tutorial, you should now be able to create and manage products, including product individual variations and quantity steps. We would recommend to be very careful when editing a product, for <strong>the information borne by the product documents will be automatically imported to the orders related to these products</strong> , which will help you save much time!</p>
</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_0_0_0&quot;]</td>
<td>15</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_0_1_0&quot;]</td>
<td>14</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_1_0_0&quot;]</td>
<td>25</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_1_1_0&quot;]</td>
<td>24</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/save&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_0_0_0&quot;]</td>
<td>15.00</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>verifyValue</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_0_1_0&quot;]</td>
<td>14.00</td>
</tr>
<tr style="opacity: 1; z-index: 0;">
<td>verifyValue</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_1_0_0&quot;]</td>
<td>25.00</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@name=&quot;field_matrixbox_base_price_cell_1_1_0&quot;]</td>
<td>24.00</td>
</tr>
</tbody>
</table>
</test></section>
<section class="chapter">
<h1>Check you the Products creation</h1>
<details open="open">Now it is time to check the products in the Product Module.</details>
<test>
<table class="test" style="display: none;">
<tbody>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;Modules&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link&quot; /&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block tal:define=&quot;click_configuration python: {&#39;text&#39;: &#39;Products&#39;}&quot;&gt; &lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_page_link&quot;&gt; &lt;/tal:block&gt; &lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded&quot;&gt;&lt;/tal:block&gt;</td>
</tr>
<tr>
<td colspan="3">&lt;tal:block metal:use-macro=&quot;here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_listbox_loaded&quot; /&gt;</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[contains(text(), &quot;ZUITE-TEST-PRODUCT-PRODUCT-001&quot;)]</td>
<td>&nbsp;</td>
</tr>
<tr style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro=&quot;container/Zuite_viewTestMacroLibrary/macros/login_as_manager&quot;&gt;Login As Manager&lt;/span&gt;</td>
</tr>
<tr>
<td>openAndWait</td>
<td>${base_url}/Zuite_tearDownProductTest</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>Clean Ok</td>
<td>&nbsp;</td>
</tr>
<tr style="opacity: 1;">
<td colspan="3">&lt;span metal:use-macro=&quot;container/Zuite_viewTestMacroLibrary/macros/wait_for_activities&quot;&gt; Wait for activities &lt;/span&gt;</td>
</tr>
</tbody>
</table>
</test></section>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment