From 5044d369e87db8300a321192cd5431b4ffa1828d Mon Sep 17 00:00:00 2001
From: Jean-Paul Smets <jp@nexedi.com>
Date: Tue, 10 Feb 2004 16:07:40 +0000
Subject: [PATCH] copied from Coramy

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@461 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../erp5_trade/InvoiceLine_priceView.form     | 301 ++++++++++++++++
 .../erp5_trade/InvoiceLine_quantityView.form  | 278 +++++++++++++++
 .../skins/erp5_trade/InvoiceLine_view.form    | 331 ++++++++++++++++++
 3 files changed, 910 insertions(+)
 create mode 100755 product/ERP5/skins/erp5_trade/InvoiceLine_priceView.form
 create mode 100755 product/ERP5/skins/erp5_trade/InvoiceLine_quantityView.form
 create mode 100755 product/ERP5/skins/erp5_trade/InvoiceLine_view.form

diff --git a/product/ERP5/skins/erp5_trade/InvoiceLine_priceView.form b/product/ERP5/skins/erp5_trade/InvoiceLine_priceView.form
new file mode 100755
index 0000000000..3b0ff782a8
--- /dev/null
+++ b/product/ERP5/skins/erp5_trade/InvoiceLine_priceView.form
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<form>
+  <title>Ligne de livraison</title>
+  <name>packing_list_line_quantity_view</name>
+  <action>base_edit</action>
+  <enctype>multipart/form-data</enctype>
+  <method>POST</method>
+  <pt>form_view</pt>
+
+  <groups>
+    <group>
+      <title>Default</title>
+      <fields>
+
+      <field><id>my_id</id> <type>StringField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <max_length></max_length>
+          <required type="int">1</required>
+          <title>Ligne n°</title>
+          <truncate type="int">0</truncate>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_long">Too much input was given.</message>
+        </messages>
+      </field>
+      </fields>
+    </group>
+    <group>
+      <title>right</title>
+      <fields>
+
+      </fields>
+    </group>
+    <group>
+      <title>center</title>
+      <fields>
+
+      </fields>
+    </group>
+    <group>
+      <title>bottom</title>
+      <fields>
+
+      <field><id>matrixbox</id> <type>MatrixBox</type>
+        <values>
+          <all_editable_attributes type="list">[('ttarget_quantity', 'target_quantity'), ('quantity', 'quantity'), ('price', 'price'), ('predicate_value', 'predicate_value'), ('variation_category_list', 'variation_category_list')]</all_editable_attributes>
+          <alternate_name></alternate_name>
+          <cell_base_id>movement</cell_base_id>
+          <cell_range type="list">[]</cell_range>
+          <columns type="list">[('None', 'None')]</columns>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <editable_attributes type="list">[('target_quantity', 'target_quantity'), ('quantity', 'quantity'), ('price', 'price'), ('predicate_value', 'predicate_value'), ('variation_category_list', 'variation_category_list')]</editable_attributes>
+          <external_validator></external_validator>
+          <getter_method></getter_method>
+          <global_attributes type="list">[('domain_base_category_list', 'domain_base_category_list'), ('mapped_value_property_list', 'mapped_value_property_list'), ('predicate_operator', 'predicate_operator')]</global_attributes>
+          <hidden type="int">0</hidden>
+          <lines type="list">[('None', 'None')]</lines>
+          <setter_method></setter_method>
+          <tabs type="list">[('None', 'None')]</tabs>
+          <title>matrixbox</title>
+          <update_cell_range type="int">1</update_cell_range>
+        </values>
+        <tales>
+          <columns>python:here.order_line_matrix_item_list(base_category_list = ('taille',), base=1)</columns>
+          <lines>python:here.order_line_matrix_item_list(base_category_list = ('coloris','variante'), base=1)</lines>
+          <tabs>python:here.order_line_matrix_item_list(base_category_list = ('taille','coloris','variante'), base=1, include=0)</tabs>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+        </messages>
+      </field>
+      <field><id>domain_base_category_list</id> <type>LinesField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">[]</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">5</height>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>Valid Domain</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+          <default>here/getVariationBaseCategoryList</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      <field><id>predicate_operator</id> <type>StringField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default>SUPERSET_OF</default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">20</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <required type="int">0</required>
+          <title>Operator</title>
+          <truncate type="int">0</truncate>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_long">Too much input was given.</message>
+        </messages>
+      </field>
+      <field><id>mapped_value_property_list</id> <type>LinesField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">['target_quantity', 'quantity', 'price']</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">5</height>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>Modified categories</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      </fields>
+    </group>
+    <group>
+      <title>hidden</title>
+      <fields>
+
+      <field><id>matrixbox_predicate_value</id> <type>LinesField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">[]</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">5</height>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>matrixbox_predicate_value</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+          <default>python:cell_index</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      <field><id>matrixbox_variation_category_list</id> <type>LinesField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">[]</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">5</height>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>matrixbox_predicate_value</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+          <default>python:cell_index</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      <field><id>matrixbox_price</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <required type="int">0</required>
+          <title>matrixbox_price</title>
+        </values>
+        <tales>
+          <default>python:cell.getProperty('price')</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      <field><id>matrixbox_quantity</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">1</hidden>
+          <required type="int">0</required>
+          <title>matrixbox_quantity</title>
+        </values>
+        <tales>
+          <default>python:cell.getProperty('quantity')</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      <field><id>matrixbox_target_quantity</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">1</hidden>
+          <required type="int">0</required>
+          <title>matrixbox_target_quantity</title>
+        </values>
+        <tales>
+          <default>python:cell.getProperty('target_quantity')</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      </fields>
+    </group>
+  </groups>
+</form>
\ No newline at end of file
diff --git a/product/ERP5/skins/erp5_trade/InvoiceLine_quantityView.form b/product/ERP5/skins/erp5_trade/InvoiceLine_quantityView.form
new file mode 100755
index 0000000000..8b911fd2fa
--- /dev/null
+++ b/product/ERP5/skins/erp5_trade/InvoiceLine_quantityView.form
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<form>
+  <title>Ligne de livraison</title>
+  <name>packing_list_line_quantity_view</name>
+  <action>base_edit</action>
+  <enctype>multipart/form-data</enctype>
+  <method>POST</method>
+  <pt>form_view</pt>
+
+  <groups>
+    <group>
+      <title>Default</title>
+      <fields>
+
+      <field><id>my_id</id> <type>StringField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <max_length></max_length>
+          <required type="int">1</required>
+          <title>Ligne n°</title>
+          <truncate type="int">0</truncate>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_long">Too much input was given.</message>
+        </messages>
+      </field>
+      </fields>
+    </group>
+    <group>
+      <title>right</title>
+      <fields>
+
+      </fields>
+    </group>
+    <group>
+      <title>center</title>
+      <fields>
+
+      </fields>
+    </group>
+    <group>
+      <title>bottom</title>
+      <fields>
+
+      <field><id>matrixbox</id> <type>MatrixBox</type>
+        <values>
+          <all_editable_attributes type="list">[('quantity', 'quantity'), ('price', 'price'), ('predicate_value', 'predicate_value'), ('variation_category_list', 'variation_category_list')]</all_editable_attributes>
+          <alternate_name></alternate_name>
+          <cell_base_id>movement</cell_base_id>
+          <cell_range type="list">[]</cell_range>
+          <columns type="list">[('None', 'None')]</columns>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <editable_attributes type="list">[('quantity', 'quantity'), ('price', 'price'), ('predicate_value', 'predicate_value'), ('variation_category_list', 'variation_category_list')]</editable_attributes>
+          <external_validator></external_validator>
+          <getter_method></getter_method>
+          <global_attributes type="list">[('domain_base_category_list', 'domain_base_category_list'), ('mapped_value_property_list', 'mapped_value_property_list'), ('predicate_operator', 'predicate_operator')]</global_attributes>
+          <hidden type="int">0</hidden>
+          <lines type="list">[('None', 'None')]</lines>
+          <setter_method></setter_method>
+          <tabs type="list">[('None', 'None')]</tabs>
+          <title>matrixbox</title>
+          <update_cell_range type="int">1</update_cell_range>
+        </values>
+        <tales>
+          <columns>python:here.order_line_matrix_item_list(base_category_list = ('taille',), base=1)</columns>
+          <lines>python:here.order_line_matrix_item_list(base_category_list = ('coloris','variante'), base=1)</lines>
+          <tabs>python:here.order_line_matrix_item_list(base_category_list = ('taille','coloris','variante'), base=1, include=0)</tabs>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+        </messages>
+      </field>
+      <field><id>domain_base_category_list</id> <type>LinesField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">[]</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">5</height>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>Valid Domain</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+          <default>here/getVariationBaseCategoryList</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      <field><id>predicate_operator</id> <type>StringField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default>SUPERSET_OF</default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">20</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <required type="int">0</required>
+          <title>Operator</title>
+          <truncate type="int">0</truncate>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_long">Too much input was given.</message>
+        </messages>
+      </field>
+      <field><id>mapped_value_property_list</id> <type>LinesField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">['target_quantity', 'quantity', 'price']</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">5</height>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>Modified categories</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      </fields>
+    </group>
+    <group>
+      <title>hidden</title>
+      <fields>
+
+      <field><id>matrixbox_predicate_value</id> <type>LinesField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">[]</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">5</height>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>matrixbox_predicate_value</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+          <default>python:cell_index</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      <field><id>matrixbox_variation_category_list</id> <type>LinesField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">[]</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">5</height>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>matrixbox_predicate_value</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+          <default>python:cell_index</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      <field><id>matrixbox_price</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">1</hidden>
+          <required type="int">0</required>
+          <title>matrixbox_price</title>
+        </values>
+        <tales>
+          <default>python:cell.getProperty('price')</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      <field><id>matrixbox_quantity</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <required type="int">0</required>
+          <title>matrixbox_quantity</title>
+        </values>
+        <tales>
+          <default>python:cell.getProperty('quantity')</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      </fields>
+    </group>
+  </groups>
+</form>
\ No newline at end of file
diff --git a/product/ERP5/skins/erp5_trade/InvoiceLine_view.form b/product/ERP5/skins/erp5_trade/InvoiceLine_view.form
new file mode 100755
index 0000000000..8e5d735898
--- /dev/null
+++ b/product/ERP5/skins/erp5_trade/InvoiceLine_view.form
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<form>
+  <title>Ligne de livraison</title>
+  <name>sales_packing_list_line_view</name>
+  <action>base_edit</action>
+  <enctype>multipart/form-data</enctype>
+  <method>POST</method>
+  <pt>form_view</pt>
+
+  <groups>
+    <group>
+      <title>left</title>
+      <fields>
+
+      <field><id>my_id</id> <type>StringField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">5</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <max_length></max_length>
+          <required type="int">1</required>
+          <title>Ligne n°</title>
+          <truncate type="int">0</truncate>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_long">Too much input was given.</message>
+        </messages>
+      </field>
+      <field><id>my_description</id> <type>TextAreaField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <height type="int">2</height>
+          <hidden type="int">0</hidden>
+          <max_length></max_length>
+          <max_linelength></max_linelength>
+          <max_lines></max_lines>
+          <required type="int">0</required>
+          <title>Description</title>
+          <width type="int">40</width>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_many_lines">You entered too many lines.</message>
+          <message name="line_too_long">A line was too long.</message>
+          <message name="too_long">You entered too many characters.</message>
+        </messages>
+      </field>
+      <field><id>my_resource_relative_url</id> <type>RelationStringField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <base_category>resource</base_category>
+          <catalog_index>relative_url</catalog_index>
+          <css_class></css_class>
+          <default></default>
+          <default_module>modele</default_module>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">40</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <jump_method>base_jump_relation</jump_method>
+          <max_length></max_length>
+          <portal_type type="list">[('Composant', 'Composant'), ('Tissu', 'Tissu'), ('Modele', 'Modele'), ('Forme', 'Forme'), ('Vetement', 'Vetement'), ('Category', 'Category'), ('Gamme', 'Gamme')]</portal_type>
+          <required type="int">0</required>
+          <title>Produit</title>
+          <truncate type="int">0</truncate>
+          <update_method>base_update_relation</update_method>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_long">Too much input was given.</message>
+        </messages>
+      </field>
+      <field><id>my_variation_base_category_list</id> <type>MultiListField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">[]</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <items type="list">[]</items>
+          <required type="int">0</required>
+          <size type="int">3</size>
+          <title>Axes variation</title>
+        </values>
+        <tales>
+          <items>here/getVariationRangeBaseCategoryList</items>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="unknown_selection">You selected an item that was not in the list.</message>
+        </messages>
+      </field>
+      <field><id>my_variation_category_list</id> <type>MultiListField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default type="list">[]</default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <items type="list">[]</items>
+          <required type="int">0</required>
+          <size type="int">8</size>
+          <title>Variantes</title>
+        </values>
+        <tales>
+          <items>here/getVariationRangeCategoryItemList</items>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="unknown_selection">You selected an item that was not in the list.</message>
+        </messages>
+      </field>
+      <field><id>my_quantity</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <required type="int">0</required>
+          <title>Quantité par défaut</title>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      </fields>
+    </group>
+    <group>
+      <title>right</title>
+      <fields>
+
+      <field><id>my_quantity_unit</id> <type>ListField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <first_item type="int">0</first_item>
+          <hidden type="int">0</hidden>
+          <items type="list">[]</items>
+          <required type="int">0</required>
+          <size type="int">1</size>
+          <title>Unité</title>
+        </values>
+        <tales>
+          <items>here/getQuantityUnitRangeItemList</items>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="unknown_selection">You selected an item that was not in the list.</message>
+        </messages>
+      </field>
+      <field><id>my_price</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <required type="int">0</required>
+          <title>Prix par défaut</title>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      <field><id>spacer</id> <type>StringField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">20</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">1</hidden>
+          <max_length></max_length>
+          <required type="int">0</required>
+          <title> </title>
+          <truncate type="int">0</truncate>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="too_long">Too much input was given.</message>
+        </messages>
+      </field>
+      <field><id>my_total_quantity</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">10</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">1</hidden>
+          <required type="int">0</required>
+          <title>Quantité facturée</title>
+        </values>
+        <tales>
+          <title>python:'Quantité facturée : %.2f' % here.getTotalQuantity()</title>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      <field><id>my_value_added_tax_ratio</id> <type>FloatField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <display_maxwidth></display_maxwidth>
+          <display_width type="int">20</display_width>
+          <external_validator></external_validator>
+          <extra></extra>
+          <hidden type="int">0</hidden>
+          <required type="int">0</required>
+          <title>Taux de TVA</title>
+        </values>
+        <tales>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="not_float">You did not enter a floating point number.</message>
+        </messages>
+      </field>
+      <field><id>my_value_added_tax_recoverable</id> <type>ListField</type>
+        <values>
+          <alternate_name></alternate_name>
+          <css_class></css_class>
+          <default></default>
+          <description></description>
+          <external_validator></external_validator>
+          <extra></extra>
+          <first_item type="int">0</first_item>
+          <hidden type="int">0</hidden>
+          <items type="list">[('Non', '0'), ('Oui', '1')]</items>
+          <required type="int">0</required>
+          <size type="int">1</size>
+          <title>Soumis à la TVA</title>
+        </values>
+        <tales>
+          <default>python:str(here.getValueAddedTaxRecoverable())</default>
+        </tales>
+        <messages>
+          <message name="external_validator_failed">The input failed the external validator.</message>
+          <message name="required_not_found">Input is required but no input given.</message>
+          <message name="unknown_selection">You selected an item that was not in the list.</message>
+        </messages>
+      </field>
+      </fields>
+    </group>
+    <group>
+      <title>center</title>
+      <fields>
+
+      </fields>
+    </group>
+    <group>
+      <title>bottom</title>
+      <fields>
+
+      </fields>
+    </group>
+    <group>
+      <title>hidden</title>
+      <fields>
+
+      </fields>
+    </group>
+  </groups>
+</form>
\ No newline at end of file
-- 
2.30.9