diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_postGeneration.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_postGeneration.xml
index dc1e0d56d79640ebb7349a12d4f102896091422e..3fdaf94f4345e7ebe71a6102435a90db702ca421 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_postGeneration.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_postGeneration.xml
@@ -53,7 +53,9 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>"""This script is called on the Invoice after the delivery builder has created\n
+            <value> <string encoding="cdata"><![CDATA[
+
+"""This script is called on the Invoice after the delivery builder has created\n
 the new Invoice.\n
 """\n
 from Products.ERP5Type.Message import translateString\n
@@ -77,8 +79,22 @@ if not invoice.Invoice_isAdvanced():\n
     invoice.setResource(invoice.getPriceCurrency())\n
 \n
 related_packing_list = invoice.getDefaultCausalityValue()\n
-\n
 related_order = related_packing_list.getDefaultCausalityValue()\n
+\n
+# copy payment conditions from packing list\n
+# if missing, try to copy from order (for compatibility)\n
+payment_condition_copy_id_list = related_packing_list.contentIds(filter={\'portal_type\':\'Payment Condition\'})\n
+if len(payment_condition_copy_id_list) > 0:\n
+  clipboard = related_packing_list.manage_copyObjects(\n
+    ids=payment_condition_copy_id_list)\n
+  invoice.manage_pasteObjects(clipboard)\n
+elif related_order is not None:\n
+  payment_condition_copy_id_list = related_order.contentIds(filter={\'portal_type\':\'Payment Condition\'})\n
+  if len(payment_condition_copy_id_list) > 0:\n
+    clipboard = related_order.manage_copyObjects(\n
+      ids=payment_condition_copy_id_list)\n
+    invoice.manage_pasteObjects(clipboard)\n
+\n
 if related_order is not None:\n
   # copy trade condition:\n
   if not context.getSpecialise():\n
@@ -113,7 +129,9 @@ invoice.startBuilding()\n
 # Then an activity should put the causality state in diverged or solved\n
 invoice.activate(after_path_and_method_id=(related_simulation_movement_path_list,\n
   (\'immediateReindexObject\',\'recursiveImmediateReindexObject\'))).updateCausalityState()\n
-</string> </value>
+
+
+]]></string> </value>
         </item>
         <item>
             <key> <string>_code</string> </key>
@@ -164,6 +182,9 @@ invoice.activate(after_path_and_method_id=(related_simulation_movement_path_list
                             <string>_getattr_</string>
                             <string>related_packing_list</string>
                             <string>related_order</string>
+                            <string>payment_condition_copy_id_list</string>
+                            <string>len</string>
+                            <string>clipboard</string>
                             <string>append</string>
                             <string>$append0</string>
                             <string>_getiter_</string>
@@ -171,7 +192,6 @@ invoice.activate(after_path_and_method_id=(related_simulation_movement_path_list
                             <string>invoice_trade_model_line_reference_list</string>
                             <string>order_trade_model_line_copy_id_list</string>
                             <string>order_trade_model_line</string>
-                            <string>clipboard</string>
                           </tuple>
                         </value>
                     </item>
diff --git a/bt5/erp5_invoicing/bt/revision b/bt5/erp5_invoicing/bt/revision
index 832f62a3cbee4ea0a1147819b77db56a04e3de4c..91a3d4243df1581626c3a06d2332405e0241720b 100644
--- a/bt5/erp5_invoicing/bt/revision
+++ b/bt5/erp5_invoicing/bt/revision
@@ -1 +1 @@
-339
\ No newline at end of file
+340
\ No newline at end of file
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/PackingList_copyOrderProperties.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/PackingList_copyOrderProperties.xml
index 48aa69a9c73a81dedb10ee9c156d975db539e729..791154a5d4a9c99c34eaac89597b62eb9b94e15f 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/PackingList_copyOrderProperties.xml
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/PackingList_copyOrderProperties.xml
@@ -53,7 +53,9 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>packing_list = context\n
+            <value> <string encoding="cdata"><![CDATA[
+
+packing_list = context\n
 related_order = packing_list.getCausalityValue()\n
 \n
 if packing_list.getSimulationState() == \'draft\':\n
@@ -61,7 +63,16 @@ if packing_list.getSimulationState() == \'draft\':\n
     comment = related_order.getComment(),\n
     title = related_order.getTitle()\n
   )\n
-</string> </value>
+\n
+  # copy order\'s payment conditions\n
+  payment_condition_copy_id_list = related_order.contentIds(filter={\'portal_type\':\'Payment Condition\'})\n
+  if len(payment_condition_copy_id_list) > 0:\n
+    clipboard = related_order.manage_copyObjects(\n
+      ids=payment_condition_copy_id_list)\n
+    packing_list.manage_pasteObjects(clipboard)\n
+
+
+]]></string> </value>
         </item>
         <item>
             <key> <string>_code</string> </key>
@@ -101,6 +112,9 @@ if packing_list.getSimulationState() == \'draft\':\n
                             <string>packing_list</string>
                             <string>_getattr_</string>
                             <string>related_order</string>
+                            <string>payment_condition_copy_id_list</string>
+                            <string>len</string>
+                            <string>clipboard</string>
                           </tuple>
                         </value>
                     </item>
diff --git a/bt5/erp5_trade/bt/revision b/bt5/erp5_trade/bt/revision
index 147d4e7f1d088e88efeca660788eabafe939da66..203bd07e6d263140da9b77baddf991832c4d81fa 100644
--- a/bt5/erp5_trade/bt/revision
+++ b/bt5/erp5_trade/bt/revision
@@ -1 +1 @@
-845
\ No newline at end of file
+846
\ No newline at end of file