Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12362)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12363)
@@ -1245,7 +1245,7 @@
         right_customer_state = self.context.customer.state in getUtility(
             ICustomersUtils).CONMANAGE_CUSTOMER_STATES
-        if isCustomer(self.request.principal) and not right_customer_state:
-            return False
-        return True
+        if right_customer_state:
+            return True
+        return False
 
     def update(self):
@@ -1296,5 +1296,5 @@
 
     def update(self):
-        if not self.context.is_editable and self.context.product_options == []:
+        if self.context.product_object is not None:
             emit_lock_message(self)
             return
@@ -1304,4 +1304,5 @@
     def save(self, **data):
         msave(self, **data)
+        self.context.tc_dict = self.context.product_object.tc_dict
         isCustomer = getattr(
             self.request.principal, 'user_type', None) == 'customer'
@@ -1331,4 +1332,13 @@
         return form_fields
 
+    @property
+    def terms_and_conditions(self):
+        lang = self.request.cookies.get('ikoba.language')
+        html = self.context.tc_dict.get(lang,'')
+        if html =='':
+            portal_language = getUtility(IIkobaUtils).PORTAL_LANGUAGE
+            html = self.context.tc_dict.get(portal_language,'')
+        return html
+
 
 class ContractManageFormPage(IkobaEditFormPage):
@@ -1351,5 +1361,5 @@
     def form_fields(self):
         return grok.AutoFields(self.context.form_fields_interface).omit(
-            'contract_id')
+            'contract_id', 'product_object')
 
     @property
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/contractpage.pt
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/contractpage.pt	(revision 12362)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser_templates/contractpage.pt	(revision 12363)
@@ -28,2 +28,8 @@
   </tbody>
 </table>
+
+<h4 i18n:domain="waeup.ikoba">
+  <span i18n:translate="">Terms and Conditions</span>
+</h4>
+
+<tal:tc content="structure view/terms_and_conditions" />
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/contracts.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/contracts.py	(revision 12362)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/contracts.py	(revision 12363)
@@ -79,4 +79,5 @@
         self.contract_id = unicode(source.get_hex_uuid())
         self.last_product_id = None
+        self.tc_dict = {}
         return
 
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py	(revision 12362)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py	(revision 12363)
@@ -295,4 +295,5 @@
     user_id = Attribute('Id of a user, actually the id of the customer')
     title = Attribute('Title generated by the associated product')
+    tc_dict = Attribute('Multilingual "Terms and Conditions" dict')
 
     contract_id = schema.TextLine(
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py	(revision 12362)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py	(revision 12363)
@@ -150,4 +150,5 @@
         contract.document_object = self.document
         contract.product_options = self.product.options
+        contract.tc_dict = {'en': u'Hello world'}
         customer['contracts'].addContract(contract)
         self.contract = contract
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12362)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12363)
@@ -107,4 +107,5 @@
         self.product.contract_category = u'sample'
         self.product.valid_from = date(2015, 12, 4)
+        self.product.tc_dict = {'en': u'Hello world'}
         prodoption = ProductOption()
         prodoption.title = u'First option'
@@ -1179,13 +1180,19 @@
         conid = [i for i in self.customer['contracts'].keys() if len(i) > 10][0]
         contract = self.customer['contracts'][conid]
-
-        # Contract can be edited
-        self.browser.getLink(conid[:6]).click()
-        self.browser.getLink("Manage").click()
+        self.assertEqual(
+            self.browser.url, self.contracts_path + '/%s/selectproduct' % conid)
+        # SAM is in the correct contract_category ...
+        self.assertTrue('<option value="SAM">' in self.browser.contents)
+        # ... but NOTSAM not.
+        self.assertFalse('<option value="LIC">' in self.browser.contents)
+        # So far last_product_id is None.
+        self.assertTrue(self.customer['contracts'][conid].last_product_id is None)
         self.browser.getControl(name="form.product_object").value = ['SAM']
-        self.browser.getControl("Save").click()
-        self.assertTrue('Form has been saved.' in self.browser.contents)
+        self.browser.getControl("Save and proceed").click()
+        self.assertEqual(
+            self.browser.url, self.contracts_path + '/%s/manage' % conid)
         self.browser.getLink("View").click()
         self.assertEqual(self.browser.url, self.contracts_path + '/%s/index' % conid)
+        self.assertEqual(contract.tc_dict, {'en': u'Hello world'})
 
         # Transitions can be performed
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_export.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_export.py	(revision 12362)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_export.py	(revision 12363)
@@ -257,7 +257,7 @@
             'class_name,contract_category,contract_id,document_object,'
             'history,last_product_id,'
-            'product_object,product_options,state,title,user_id\r\n'
-
-            'SampleContract,sample,CON1,,[],,,[],,,\r\n'
+            'product_object,product_options,state,tc_dict,title,user_id\r\n'
+
+            'SampleContract,sample,CON1,,[],,,[],,{},,\r\n'
             )
         return
@@ -273,10 +273,10 @@
             'class_name,contract_category,contract_id,document_object,'
             'history,last_product_id,'
-            'product_object,product_options,state,title,user_id\r\n'
+            'product_object,product_options,state,tc_dict,title,user_id\r\n'
 
             'SampleContract,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
             'Contract created by system\'],,'
             'SAM,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",'
-            'created,Our Sample Product,A111111\r\n',
+            'created,{\'en\': u\'Hello world\'},Our Sample Product,A111111\r\n',
             result
             )
@@ -293,10 +293,10 @@
             'class_name,contract_category,contract_id,document_object,'
             'history,last_product_id,'
-            'product_object,product_options,state,title,user_id\r\n'
+            'product_object,product_options,state,tc_dict,title,user_id\r\n'
 
             'SampleContract,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
             'Contract created by system\'],,'
             'SAM,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",'
-            'created,Our Sample Product,A111111\r\n',
+            'created,{\'en\': u\'Hello world\'},Our Sample Product,A111111\r\n',
             result
             )
@@ -313,12 +313,12 @@
             'class_name,contract_category,contract_id,document_object,'
             'history,last_product_id,'
-            'product_object,product_options,state,title,user_id\r\n'
+            'product_object,product_options,state,tc_dict,title,user_id\r\n'
 
             'SampleContract,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
             'Contract created by system\'],,'
             'SAM,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",'
-            'created,Our Sample Product,A111111\r\n',
-            result
-            )
-        return
-
+            'created,{\'en\': u\'Hello world\'},Our Sample Product,A111111\r\n',
+            result
+            )
+        return
+
