diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_getODTDataDict.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_getODTDataDict.xml index 4580d17478fe017eab3577275d727c24258b9f83..b376bd7e6bfe57ee43c96a9d0237180acc68a3b3 100644 --- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_getODTDataDict.xml +++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_getODTDataDict.xml @@ -65,184 +65,37 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>T_ = context.Base_translateString\n -\n -def getFieldAsString(field):\n - field = field or \'\'\n - text = field.replace(\'\\r\', \'\')\n - text_list = text.split(\'\\n\')\n - text_list = [x for x in text_list if x]\n - return \', \'.join(text_list)\n -\n -def getProductAndLineDesc(prod_desc, line_desc):\n - if prod_desc:\n - if line_desc:\n - return \' - \'.join([getFieldAsString(prod_desc), getFieldAsString(line_desc)])\n - return getFieldAsString(prod_desc)\n - return getFieldAsString(line_desc)\n -\n -def getOneLineAddress(text, region):\n - text_list = [getFieldAsString(text)]\n - if region:\n - text_list.append(region)\n - return \', \'.join(text_list)\n -\n -def getPhoneAndFax(phone, fax):\n - s = \'\'\n - if phone:\n - s += \'%s: %s\' % (T_(\'tel.\'), phone)\n - if fax:\n - if s: s += \', \'\n - s += \'%s: %s\' % (T_(\'fax\'), fax)\n - return s\n -\n -def getEmail(email):\n - s = \'\'\n - if email:\n - s += \'%s: %s\' % (T_(\'email\'), email)\n - return s\n -\n -def getVatId(vat_id):\n - s = \'\'\n - if vat_id:\n - s += \'%s: %s\' % (T_(\'VAT ID\'), vat_id)\n - return s\n -\n -preferred_date_order = context.getPortalObject().portal_preferences.getPreferredDateOrder() or \'ymd\'\n -separator = \'/\'\n -def getOrderedDate(date):\n - if date is None:\n - return \'\'\n - pattern = separator.join(list(preferred_date_order))\n - pattern = pattern.replace(\'y\', \'%Y\')\n - pattern = pattern.replace(\'m\', \'%m\')\n - pattern = pattern.replace(\'d\', \'%d\')\n - return date.strftime(pattern)\n -\n -def getSourceReference(line):\n - category_list = line.getAcquiredCategoryList()\n - portal_type_list = (\'Invoice Line\',\n - \'Invoice Cell\',)\n - tmp_context = line.asContext(context=line, categories=category_list)\n - predicate_list = context.portal_domains.searchPredicateList(tmp_context, portal_type=portal_type_list)\n - for predicate in predicate_list:\n - source_reference = predicate.getSourceReference()\n - if source_reference:\n - return source_reference\n - return \'\'\n -\n -def getPaymentConditionText(order):\n - if order.getPaymentConditionPaymentEndOfMonth():\n - return T_("End of Month")\n - days = order.getPaymentConditionPaymentTerm()\n - if days:\n - return \'%s %s\' % (days, T_(\'Days\'))\n - return \'\'\n -\n -line_list = []\n -total_price = 0.0\n -total_vat = 0.0\n + <value> <string>def getSourceReference(line):\n + return \'\' # FIXME: what is it ???\n \n excluded_portal_type_list = context.getPortalTaxMovementTypeList() + context.getPortalAccountingMovementTypeList()\n \n def getSubLineList(obj):\n sub_list = []\n - for x in obj.searchFolder(portal_type=context.getPortalInvoiceMovementTypeList(),\n - sort_on=[(\'int_index\', \'ascending\'), (\'reference\', \'ascending\')]):\n + for x in obj.contentValues(portal_type=context.getPortalInvoiceMovementTypeList(),\n + sort_on=[(\'int_index\', \'ascending\'), (\'reference\', \'ascending\')],\n + checked_permission=\'View\'):\n if x.getPortalType() in excluded_portal_type_list:\n continue\n sub_list.append(x)\n sub_list.extend(getSubLineList(x))\n return sub_list\n \n -def unicodeDict(d):\n - for k, v in d.items():\n - if isinstance(v, str):\n - d.update({k:unicode(v, \'utf8\')})\n - return d\n -\n -for line in getSubLineList(context):\n - prod_desc = line.getResource() is not None and line.getResourceValue().getDescription() or \'\'\n - desc = getProductAndLineDesc(prod_desc, line.getDescription())\n -\n - line_dict = {\n - \'style_name\': \'Table_20_Contents\',\n - \'left_style_name\': \'Table_20_Contents_20_Left\',\n - \'right_style_name\': \'Table_20_Contents_20_Right\',\n - \'index\': line.getReference() or line.getIntIndex(),\n - \'source_reference\': getSourceReference(line),\n - \'reference\': line.getResource() is not None and line.getResourceValue().getReference() or \'\',\n - \'description\': desc,\n - \'total_quantity\': line.getTotalQuantity() or \'\',\n - \'quantity_unit\': line.getQuantityUnitTitle() or (line.getResource() and line.getResourceValue().getQuantityUnitTitle()) or \'\',\n - \'stop_date\': getOrderedDate(line.getStopDate()) or \'\',\n - \'base_price\': line.getPrice() or \'\',\n - \'total_price\': line.getTotalPrice() or \'\',\n - }\n - total_price += line.getTotalPrice() or 0.0\n - line_list.append(unicodeDict(line_dict.copy()))\n -\n -data_dict = {\n - \'source_section_title\': context.getSourceSectionTitle() or \'\',\n - \'source_section_image_path\': context.getSourceSectionValue() is not None and context.getSourceSectionValue().getDefaultImagePath() or \'\',\n - \'source_section_address\': getOneLineAddress(\n - context.getSourceSection() and context.getSourceSectionValue().getDefaultAddressText() or \'\',\n - context.getSourceSection() and context.getSourceSectionValue().getDefaultAddressRegionTitle() or \'\'),\n - \'source_section_telfax\': getPhoneAndFax(context.getSourceSection() and context.getSourceSectionValue().getTelephoneText() or \'\',\n - context.getSourceSection() and context.getSourceSectionValue().getFaxText() or \'\'),\n - \'source_section_email\': getEmail(context.getSourceSection() and context.getSourceSectionValue().getEmailText() or \'\'),\n - \'source_section_vatid\': getVatId(context.getSourceSection() and context.getSourceSectionValue().getVatCode() or \'\'),\n +data_dict = context.Delivery_getODTDataDict(getSourceReference, getSubLineList)\n \n - \'source_decision_title\': context.getSourceDecisionTitle() or \'\',\n - \'source_decision_address\': unicode(getOneLineAddress(\n - context.getSourceDecision() and context.getSourceDecisionValue().getDefaultAddressText() or \'\',\n - context.getSourceDecision() and context.getSourceDecisionValue().getDefaultAddressRegionTitle() or \'\'), \'utf8\'),\n - \'source_decision_telfax\': getPhoneAndFax(context.getSourceDecision() and context.getSourceDecisionValue().getTelephoneText() or \'\',\n - context.getSourceDecision() and context.getSourceDecisionValue().getFaxText() or \'\'),\n - \'source_decision_email\': getEmail(context.getSourceDecision() and context.getSourceDecisionValue().getEmailText() or \'\'),\n - \'source_decision_vatid\': getVatId(context.getSourceDecision() and context.getSourceDecisionValue().getVatCode() or \'\'),\n +bank_account = context.getDestinationPaymentValue(portal_type=\'Bank Account\')\n +if context.getPortalType() == \'Sale Invoice Transaction\':\n + bank_account = context.getSourcePaymentValue(portal_type=\'Bank Account\')\n + \n +if bank_account is not None:\n + data_dict.update(\n + bank_name=bank_account.getSourceTitle() or bank_account.getTitle(),\n + bank_address=bank_account.getSource() and\\\n + bank_account.getSourceValue().getDefaultAddressText() or \'\',\n + bank_account_reference=bank_account.getReference(),\n + bank_account_description=bank_account.getDescription() or bank_account.getTitle(),)\n \n - \'destination_title\': context.getDestinationTitle() or \'\',\n - \'destination_address\': getOneLineAddress(\n - context.getDestination() and context.getDestinationValue().getDefaultAddressText() or \'\',\n - context.getDestination() and context.getDestinationValue().getDefaultAddressRegionTitle() or \'\'),\n - \'destination_telfax\': getPhoneAndFax(context.getDestination() and context.getDestinationValue().getTelephoneText() or \'\',\n - context.getDestination() and context.getDestinationValue().getFaxText() or \'\'),\n - \'destination_email\': getEmail(context.getDestination() and context.getDestinationValue().getEmailText() or \'\'),\n \n - \'destination_section_title\': context.getDestinationSectionTitle() or \'\',\n - \'destination_section_image_path\': context.getDestinationSectionValue() is not None and context.getDestinationSectionValue().getDefaultImagePath() or \'\',\n - \'destination_section_address\': unicode(getOneLineAddress(\n - context.getDestinationSection() and context.getDestinationSectionValue().getDefaultAddressText() or \'\',\n - context.getDestinationSection() and context.getDestinationSectionValue().getDefaultAddressRegionTitle() or \'\'), \'utf8\'),\n - \'destination_section_telfax\': getPhoneAndFax(\n - context.getDestinationSection() and context.getDestinationSectionValue().getTelephoneText() or \'\',\n - context.getDestinationSection() and context.getDestinationSectionValue().getTelephoneText() or \'\'),\n - \'destination_section_email\': getEmail(context.getDestinationSection() and context.getDestinationSectionValue().getEmailText() or \'\'),\n - \'destination_section_vatid\': getVatId(context.getDestinationSection() and context.getDestinationSectionValue().getVatCode() or \'\'),\n -\n - \'destination_decision_title\': context.getDestinationDecisionTitle() or \'\',\n - \'destination_decision_telfax\': getPhoneAndFax(context.getDestinationDecision() and context.getDestinationDecisionValue().getTelephoneText() or \'\',\n - context.getDestinationDecision() and context.getDestinationDecisionValue().getFaxText() or \'\'),\n - \'destination_decision_email\': getEmail(context.getDestinationDecision() and context.getDestinationDecisionValue().getEmailText() or \'\'),\n -\n - \'reference\': context.getReference() or \'\',\n - \'start_date\': getOrderedDate(context.getStartDate()) or \'\',\n - \'stop_date\': getOrderedDate(context.getStopDate()) or \'\',\n - \'currency\': context.getPriceCurrencyReference() or \'\',\n - \'payment_condition\': getPaymentConditionText(context),\n - \'delivery_mode\': context.getDeliveryModeTitle() or \'\',\n - \'incoterm\': context.getIncoterm() and context.getIncotermValue().getCodification() or \'\',\n -\n - \'total_price_novat\': total_price,\n - \'vat_list\': context.searchFolder(portal_type=context.getPortalTaxMovementTypeList(), order_by=\'title\'),\n - \'description\': getFieldAsString(context.getDescription()),\n -\n - \'line_list\': line_list,\n -}\n -unicodeDict(data_dict)\n -#from pprint import pformat\n -#context.log(pformat(data_dict))\n return data_dict\n </string> </value> </item> @@ -292,35 +145,14 @@ return data_dict\n <key> <string>co_varnames</string> </key> <value> <tuple> + <string>getSourceReference</string> <string>_getattr_</string> <string>context</string> - <string>T_</string> - <string>getFieldAsString</string> - <string>getProductAndLineDesc</string> - <string>getOneLineAddress</string> - <string>getPhoneAndFax</string> - <string>getEmail</string> - <string>getVatId</string> - <string>preferred_date_order</string> - <string>separator</string> - <string>getOrderedDate</string> - <string>getSourceReference</string> - <string>getPaymentConditionText</string> - <string>line_list</string> - <string>total_price</string> - <string>total_vat</string> <string>excluded_portal_type_list</string> <string>getSubLineList</string> - <string>unicodeDict</string> - <string>_getiter_</string> - <string>line</string> - <string>None</string> - <string>prod_desc</string> - <string>desc</string> - <string>line_dict</string> - <string>_inplacevar_</string> - <string>unicode</string> <string>data_dict</string> + <string>bank_account</string> + <string>None</string> </tuple> </value> </item> @@ -339,6 +171,12 @@ return data_dict\n <key> <string>id</string> </key> <value> <string>Invoice_getODTDataDict</string> </value> </item> + <item> + <key> <string>uid</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>warnings</string> </key> <value> diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewAsODT.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewAsODT.xml index 99436db7e64b4bac7d214a5a57fec34038b134a7..9def6920ee97bc348ffd64e832311c88a5e8fe52 100644 --- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewAsODT.xml +++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewAsODT.xml @@ -64,7 +64,11 @@ AAA=</string> </value> <value> <string encoding="cdata"><![CDATA[ <office:document-content xmlns:office=\'urn:oasis:names:tc:opendocument:xmlns:office:1.0\' xmlns:text=\'urn:oasis:names:tc:opendocument:xmlns:text:1.0\' xmlns:number=\'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\' xmlns:meta=\'urn:oasis:names:tc:opendocument:xmlns:meta:1.0\' xmlns:tal=\'http://xml.zope.org/namespaces/tal\' xmlns:table=\'urn:oasis:names:tc:opendocument:xmlns:table:1.0\' xmlns:style=\'urn:oasis:names:tc:opendocument:xmlns:style:1.0\' xmlns:script=\'urn:oasis:names:tc:opendocument:xmlns:script:1.0\' xmlns:xlink=\'http://www.w3.org/1999/xlink\' xmlns:math=\'http://www.w3.org/1998/Math/MathML\' xmlns:draw=\'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\' xmlns:form=\'urn:oasis:names:tc:opendocument:xmlns:form:1.0\' xmlns:ooo=\'http://openoffice.org/2004/office\' xmlns:dc=\'http://purl.org/dc/elements/1.1/\' xmlns:chart=\'urn:oasis:names:tc:opendocument:xmlns:chart:1.0\' xmlns:i18n=\'http://xml.zope.org/namespaces/i18n\' xmlns:dr3d=\'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\' xmlns:fo=\'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\' xmlns:xforms=\'http://www.w3.org/2002/xforms\' xmlns:dom=\'http://www.w3.org/2001/xml-events\' xmlns:ooow=\'http://openoffice.org/2004/writer\' xmlns:svg=\'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\' xmlns:metal=\'http://xml.zope.org/namespaces/metal\' xmlns:xsd=\'http://www.w3.org/2001/XMLSchema\' xmlns:xsi=\'http://www.w3.org/2001/XMLSchema-instance\' xmlns:oooc=\'http://openoffice.org/2004/calc\' tal:attributes=\'dummy python:request.RESPONSE.setHeader("Content-Type", "text/html;; charset=utf-8")\' office:version=\'1.0\'\n - tal:define=\'data_dict here/Invoice_getODTDataDict\'>\n + tal:define="data_dict here/Invoice_getODTDataDict;\n + set_precision python: request.set(\'precision\', here.getQuantityPrecisionFromResource(here.getPriceCurrency()));\n + quantity_renderer nocall:here/OrderLine_viewFieldLibrary/my_quantity/render_pdf;\n + price_renderer nocall:here/OrderLine_viewFieldLibrary/my_price/render_pdf;\n + default_language python:test(request.get(\'international_form\'), \'en\', here.Localizer.get_selected_language())">\n <office:scripts/>\n <office:font-face-decls>\n <style:font-face svg:font-family=\'StarSymbol\' style:name=\'StarSymbol\' style:font-charset=\'x-symbol\'/>\n @@ -80,7 +84,7 @@ AAA=</string> </value> <style:table-properties fo:margin-left=\'0.021cm\' fo:margin-right=\'-0.014cm\' fo:break-before=\'page\' table:align=\'margins\' style:width=\'18.994cm\'/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau1.A\'>\n - <style:table-column-properties style:rel-column-width=\'2690*\' style:column-width=\'0.78cm\'/>\n + <style:table-column-properties style:rel-column-width=\'3690*\' style:column-width=\'1.58cm\'/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau1.B\'>\n <style:table-column-properties style:rel-column-width=\'7254*\' style:column-width=\'2.103cm\'/>\n @@ -107,7 +111,7 @@ AAA=</string> </value> <style:table-column-properties style:rel-column-width=\'5870*\' style:column-width=\'1.7cm\'/>\n </style:style>\n <style:style style:family=\'table-row\' style:name=\'Tableau1.1\'>\n - <style:table-row-properties style:min-row-height=\'2.759cm\'/>\n + <style:table-row-properties style:min-row-height=\'5.0cm\'/>\n </style:style>\n <style:style style:family=\'table-cell\' style:name=\'Tableau1.A1\'>\n <style:table-cell-properties fo:padding=\'0cm\' fo:background-color=\'transparent\' fo:border=\'none\'>\n @@ -121,13 +125,13 @@ AAA=</string> </value> <style:table-column-properties style:rel-column-width=\'5326*\' style:column-width=\'1.542cm\'/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau2.B\'>\n - <style:table-column-properties style:rel-column-width=\'20270*\' style:column-width=\'5.868cm\'/>\n + <style:table-column-properties style:rel-column-width=\'18000*\' style:column-width=\'5.000cm\'/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau2.C\'>\n - <style:table-column-properties style:rel-column-width=\'4344*\' style:column-width=\'1.258cm\'/>\n + <style:table-column-properties style:rel-column-width=\'5326*\' style:column-width=\'1.542cm\'/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau2.D\'>\n - <style:table-column-properties style:rel-column-width=\'20214*\' style:column-width=\'5.853cm\'/>\n + <style:table-column-properties style:rel-column-width=\'18000*\' style:column-width=\'5.000cm\'/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau2.E\'>\n <style:table-column-properties style:rel-column-width=\'15381*\' style:column-width=\'4.454cm\'/>\n @@ -157,7 +161,7 @@ AAA=</string> </value> <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'0.018cm solid #000000\' fo:border-top=\'none\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' style:vertical-align=\'middle\'/>\n </style:style>\n <style:style style:family=\'table-cell\' style:name=\'Tableau1.A2\'>\n - <style:table-cell-properties fo:padding=\'0.049cm\' fo:border-right=\'none\' fo:border-top=\'none\' fo:background-color=\'transparent\' fo:border-left=\'none\' fo:border-bottom=\'0.018cm solid #000000\'>\n + <style:table-cell-properties fo:padding=\'0.049cm\' fo:border-right=\'none\' fo:border-top=\'none\' fo:background-color=\'#e6e6e6\' fo:border-left=\'none\' fo:border-bottom=\'0.018cm solid #000000\'>\n <style:background-image/>\n </style:table-cell-properties>\n </style:style>\n @@ -181,22 +185,22 @@ AAA=</string> </value> <style:table-properties style:may-break-between-rows=\'false\' table:align=\'margins\' style:width=\'18.994cm\'/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau3.A\'>\n - <style:table-column-properties style:rel-column-width=\'10535*\' style:column-width=\'3.053cm\'/>\n + <style:table-column-properties style:column-width="1.633cm" style:rel-column-width="926*"/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau3.B\'>\n - <style:table-column-properties style:rel-column-width=\'5493*\' style:column-width=\'1.593cm\'/>\n + <style:table-column-properties style:column-width="5.495cm" style:rel-column-width="3115*"/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau3.C\'>\n - <style:table-column-properties style:rel-column-width=\'34451*\' style:column-width=\'9.985cm\'/>\n + <style:table-column-properties style:column-width="7.502cm" style:rel-column-width="4253*"/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau3.D\'>\n - <style:table-column-properties style:rel-column-width=\'9165*\' style:column-width=\'2.656cm\'/>\n + <style:table-column-properties style:column-width="2.656cm" style:rel-column-width="1506*"/>\n </style:style>\n <style:style style:family=\'table-column\' style:name=\'Tableau3.E\'>\n - <style:table-column-properties style:rel-column-width=\'5891*\' style:column-width=\'1.707cm\'/>\n + <style:table-column-properties style:column-width="1.707cm" style:rel-column-width="968*"/>\n </style:style>\n <style:style style:family=\'table-row\' style:name=\'Tableau3.1\'>\n - <style:table-row-properties style:row-height=\'0.25cm\'/>\n + <style:table-row-properties style:row-height=\'0.50cm\'/>\n </style:style>\n <style:style style:family=\'table-cell\' style:name=\'Tableau3.A1\'>\n <style:table-cell-properties style:vertical-align=\'middle\' fo:padding=\'0.097cm\' fo:border=\'none\'/>\n @@ -222,22 +226,31 @@ AAA=</string> </value> <style:style style:family=\'table-cell\' style:name=\'Tableau3.E3\'>\n <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'0.018cm solid #000000\' fo:border-top=\'none\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' style:vertical-align=\'middle\'/>\n </style:style>\n - <style:style style:family=\'table-row\' style:name=\'Tableau3.6\'>\n + <style:style style:name="Tableau3.5" style:family="table-row">\n + <style:table-row-properties style:row-height="2.251cm"/>\n + </style:style>\n + <style:style style:name="Tableau3.A5" style:family="table-cell">\n + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.018cm solid #000000" fo:border-right="none" fo:border-top="0.018 solid #000000" fo:border-bottom="0.018 solid #000000"/>\n + </style:style>\n + <style:style style:name="Tableau3.B5" style:family="table-cell">\n + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.097cm" fo:border="0.018cm solid #000000"/>\n + </style:style>\n + <style:style style:name="Tableau3.7" style:family="table-row">\n <style:table-row-properties style:row-height=\'0.45cm\'/>\n </style:style>\n - <style:style style:family=\'table-cell\' style:name=\'Tableau3.A6\'>\n + <style:style style:family=\'table-cell\' style:name=\'Tableau3.A7\'>\n <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'none\' fo:border-top=\'0.018cm solid #000000\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'/>\n </style:style>\n - <style:style style:family=\'table-cell\' style:name=\'Tableau3.B6\'>\n + <style:style style:family=\'table-cell\' style:name=\'Tableau3.B7\'>\n <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'none\' fo:border-top=\'0.018cm solid #000000\' fo:border-left=\'none\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'/>\n </style:style>\n - <style:style style:family=\'table-cell\' style:name=\'Tableau3.E6\'>\n + <style:style style:family=\'table-cell\' style:name=\'Tableau3.E7\'>\n <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'0.018cm solid #000000\' fo:border-top=\'0.018cm solid #000000\' fo:border-left=\'none\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'/>\n </style:style>\n - <style:style style:family=\'table-row\' style:name=\'Tableau3.7\'>\n + <style:style style:family=\'table-row\' style:name=\'Tableau3.8\'>\n <style:table-row-properties style:row-height=\'1.499cm\'/>\n </style:style>\n - <style:style style:family=\'table-cell\' style:name=\'Tableau3.A7\'>\n + <style:style style:family=\'table-cell\' style:name=\'Tableau3.A8\'>\n <style:table-cell-properties fo:border-left=\'0.018cm solid #000000\' fo:border-right=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' fo:padding=\'0.097cm\' fo:border-top=\'none\'/>\n </style:style>\n <style:style style:parent-style-name=\'Table_20_Heading\' style:family=\'paragraph\' style:name=\'P1\'>\n @@ -247,11 +260,14 @@ AAA=</string> </value> <style:paragraph-properties fo:text-align=\'start\' style:justify-single-word=\'false\'/>\n </style:style>\n <style:style style:parent-style-name=\'Table_20_Contents\' style:family=\'paragraph\' style:name=\'P3\'>\n - <style:paragraph-properties fo:text-align=\'justify\' style:justify-single-word=\'false\'/>\n + <style:paragraph-properties fo:text-align=\'left\' style:justify-single-word=\'false\'/>\n </style:style>\n <style:style style:parent-style-name=\'Text_20_body\' style:family=\'paragraph\' style:name=\'P4\'>\n <style:text-properties style:font-size-complex=\'6pt\' style:font-size-asian=\'6pt\' style:font-weight-complex=\'normal\' style:font-weight-asian=\'normal\' fo:font-size=\'6pt\' fo:font-weight=\'normal\'/>\n </style:style>\n + <style:style style:name="P6" style:family="paragraph" style:parent-style-name="Big_20_Table_20_Content_20_Left">\n + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>\n + </style:style>\n </office:automatic-styles>\n <office:body>\n <office:text>\n @@ -299,60 +315,50 @@ AAA=</string> </value> office:value-type=\'string\'>\n <!--This PageTemplate is Used For Sale Order and Purchase Order-->\n <tal:block tal:define="orig_string string:Supplier;\n - en_string python: unicode(here.Base_translateString(orig_string, lang=\'en\'), \'utf-8\');\n - my_string python: unicode(here.Base_translateString(orig_string), \'utf-8\');\n - ds_title python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_title\'] or data_dict[\'source_section_title\'];\n - ds_address python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_address\'] or data_dict[\'source_section_address\'];\n - ds_telfax python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_telfax\'] or data_dict[\'source_section_telfax\'];\n - ds_email python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_email\'] or data_dict[\'source_section_email\'];\n - ds_vatid python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_vatid\'] or data_dict[\'source_section_vatid\'];\n - orig_title string:Invoice;\n - en_title python: unicode(here.Base_translateString(orig_title, lang=\'en\'), \'utf-8\');\n - my_title python: unicode(here.Base_translateString(orig_title), \'utf-8\');\n - orig_page string:Page;\n - en_page python: unicode(here.Base_translateString(orig_page, lang=\'en\'), \'utf-8\');\n - my_page python: unicode(here.Base_translateString(orig_page), \'utf-8\');\n - orig_of string:of;\n - en_of python: unicode(here.Base_translateString(orig_of, lang=\'en\'), \'utf-8\');\n - my_of python: unicode(here.Base_translateString(orig_of), \'utf-8\')">\n + orig_message python:here.Base_translateString(orig_string, lang=default_language);\n + translated_message python:here.Base_translateString(orig_string);">\n <text:p text:style-name=\'Table_20_Heading\'>\n - \n - <tal:block tal:replace=\'en_string\'/>:</text:p>\n + <tal:block tal:replace=\'orig_message\'/>:</text:p>\n <text:p text:style-name=\'Table_20_Heading\'\n - tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </tal:block>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.A1\'\n office:value-type=\'string\'>\n - <text:p text:style-name=\'Table_20_Contents\'\n + <text:p text:style-name=\'Big_20_Table_20_Content_20_Left\'\n tal:content=\'python:data_dict["source_section_title"]\'>source_section</text:p>\n - <text:p text:style-name=\'Table_20_Contents\'\n + <text:p text:style-name=\'Table_20_Contents_20_Left\'\n tal:content=\'python:data_dict["source_section_address"]\'>address</text:p>\n - <text:p text:style-name=\'Table_20_Contents\'\n + <text:p text:style-name=\'Table_20_Contents_20_Left\'\n tal:content=\'python:data_dict["source_section_telfax"]\'>tel, fax</text:p>\n - <text:p text:style-name=\'Table_20_Contents\'\n + <text:p text:style-name=\'Table_20_Contents_20_Left\'\n tal:content=\'python:data_dict["source_section_email"]\'>email</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\'\n + tal:condition=\'data_dict/source_section_vatid\'\n + tal:content=\'python:data_dict["source_section_vatid"]\'>vat ID</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.A1\'\n office:value-type=\'string\'\n - tal:define=\'orig_string string:Recipient; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + tal:define=\'orig_string string:Client; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.A1\' office:value-type=\'string\'>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["destination_title"]\'>destination</text:p>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["destination_address"]\'>address</text:p>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["destination_telfax"]\'>tel, fax</text:p>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["destination_email"]\'>email</text:p>\n + <text:p text:style-name=\'Big_20_Table_20_Content_20_Left\' tal:content=\'python:data_dict["destination_section_title"]\'>destination</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\' tal:content=\'python:data_dict["destination_section_address"]\'>address</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\' tal:content=\'python:data_dict["destination_section_telfax"]\'>tel, fax</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\' tal:content=\'python:data_dict["destination_section_email"]\'>email</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\' tal:content=\'python:data_dict["destination_section_vatid"]\'\n + tal:condition="data_dict/destination_section_vatid">vat ID</text:p>\n </table:table-cell>\n <table:table-cell>\n <table:table table:is-sub-table=\'true\'>\n <table:table-column table:style-name=\'Tableau2.E1.1\'/>\n <table:table-column table:style-name=\'Tableau2.E1.2\'/>\n <table:table-row table:style-name=\'Tableau2.E1.1\'>\n - <table:table-cell table:style-name=\'Tableau2.A1\' office:value-type=\'string\' tal:define=\'orig_string string:Reference; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau2.A1\' office:value-type=\'string\' tal:define=\'orig_string string:Reference; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.E1.2.1\' office:value-type=\'string\'>\n <text:p text:style-name=\'Big_20_Table_20_Content\' tal:content=\'python:data_dict["reference"]\'>reference</text:p>\n @@ -361,9 +367,9 @@ AAA=</string> </value> <table:table-row table:style-name=\'Tableau2.E1.1\'>\n <table:table-cell table:style-name=\'Tableau2.E1.1.2\'\n office:value-type=\'string\'\n - tal:define=\'orig_string string:Document Date; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + tal:define=\'orig_string string:Document Date; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.E1.2.2\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'\n @@ -371,9 +377,9 @@ AAA=</string> </value> </table:table-cell>\n </table:table-row>\n <table:table-row table:style-name=\'Tableau2.E1.1\'>\n - <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Currency; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Currency; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.E1.2.2\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["currency"]\'>EUR</text:p>\n @@ -384,50 +390,56 @@ AAA=</string> </value> </table:table-row>\n </table:table-header-rows>\n <table:table-row table:style-name=\'Tableau2.1\'>\n - <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Seller; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Ship From; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\'>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["source_decision_title"]\'>name</text:p>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["source_decision_telfax"]\'>tel, fax</text:p>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["source_decision_email"]\'>email</text:p>\n + <text:p text:style-name=\'Big_20_Table_20_Content_20_Left\' tal:content=\'python:data_dict["source_title"]\'>name</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\' tal:content=\'python:data_dict["source_address"]\'>address</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\' tal:content=\'python:data_dict["source_telfax"]\'>tel, fax</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\'\n + tal:condition="data_dict/source_vatid"\n + tal:content=\'python:data_dict["source_vatid"]\'>vat id</text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Buyer; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Ship To; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\'>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["destination_decision_title"]\'>name</text:p>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["destination_decision_telfax"]\'>tel, fax</text:p>\n - <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["destination_decision_email"]\'>email</text:p>\n + <text:p text:style-name=\'Big_20_Table_20_Content_20_Left\' tal:content=\'python:data_dict["destination_title"]\'>name</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\' tal:content=\'python:data_dict["destination_address"]\'>address</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\' tal:content=\'python:data_dict["destination_telfax"]\'>tel, fax</text:p>\n + <text:p text:style-name=\'Table_20_Contents_20_Left\'\n + tal:condition="data_dict/destination_vatid"\n + tal:content=\'python:data_dict["destination_vatid"]\'>vat id</text:p>\n </table:table-cell>\n <table:table-cell>\n <table:table table:is-sub-table=\'true\'>\n <table:table-column table:style-name=\'Tableau2.E1.1\'/>\n <table:table-column table:style-name=\'Tableau2.E1.2\'/>\n <table:table-row table:style-name=\'Tableau2.E1.1\'>\n - <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Payment; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Payment; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.E1.2.2\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["payment_condition"]\'>60 days</text:p>\n </table:table-cell>\n </table:table-row>\n <table:table-row table:style-name=\'Tableau2.E1.1\'>\n - <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Delivery Mode; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Delivery Mode; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.E1.2.2\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["delivery_mode"]\'>del mode</text:p>\n </table:table-cell>\n </table:table-row>\n <table:table-row table:style-name=\'Tableau2.E1.1\'>\n - <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Incoterm; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau2.E1.1.2\' office:value-type=\'string\' tal:define=\'orig_string string:Incoterm; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau2.E1.2.2\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:data_dict["incoterm"]\'>incoterm</text:p>\n @@ -449,41 +461,41 @@ AAA=</string> </value> <table:covered-table-cell/>\n </table:table-row>\n <table:table-row>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Line; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Line; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Your Item no.; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Your Item No.; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Our Item no.; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Our Item No.; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Description; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Description; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Quantity; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Right\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Right\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Quantity; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Unit; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Unit; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Delivery Date; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Delivery Date; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Unit Price; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Right\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Right\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Unit Price; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Total Price; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Right\'><span tal:replace=\'en_string\'/></text:p>\n - <text:p text:style-name=\'Item_20_Table_20_Title_20_Right\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/></text:p>\n + <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Total Price; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n + <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n </table:table-cell>\n </table:table-row>\n </table:table-header-rows>\n @@ -505,15 +517,22 @@ AAA=</string> </value> tal:attributes=\'text:style-name style_name\'>ref</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n - <text:p text:style-name=\'Table_20_Contents\'\n - tal:content=\'python:line_dict["description"]\'\n - tal:attributes=\'text:style-name left_style_name\'>desc</text:p>\n + <text:p text:style-name=\'Table_20_Contents\' tal:attributes="text:style-name left_style_name"><tal:block tal:repeat="line line_dict/description"><tal:block\n + tal:replace="line"/><text:line-break tal:condition="not:repeat/line/end"/></tal:block></text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'float\'>\n + <table:table-cell table:style-name=\'Tableau1.A3\'\n + office:value-type=\'float\'\n + tal:condition="python: line_dict[\'total_quantity\'] != \'\'"\n + tal:attributes=\'office:value line_dict/total_quantity\'> \n <text:p text:style-name=\'Table_20_Contents\'\n - tal:content=\'python:line_dict["total_quantity"]\'\n + tal:content="python: quantity_renderer(line_dict[\'total_quantity\'])"\n tal:attributes=\'text:style-name right_style_name\'>qty</text:p>\n </table:table-cell>\n + <table:table-cell table:style-name=\'Tableau1.A3\'\n + office:value-type=\'string\'\n + tal:condition="python: line_dict[\'total_quantity\'] == \'\'"> \n + <text:p text:style-name=\'Table_20_Contents\'/>\n + </table:table-cell>\n <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'\n tal:content=\'python:line_dict["quantity_unit"]\'\n @@ -524,16 +543,32 @@ AAA=</string> </value> tal:content=\'python:line_dict["stop_date"]\'\n tal:attributes=\'text:style-name style_name\'>stop_date</text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'float\'>\n + <table:table-cell table:style-name=\'Tableau1.A3\'\n + tal:condition="python: line_dict[\'base_price\'] != \'\'"\n + office:value-type=\'float\'\n + tal:attributes="office:value line_dict/base_price">\n <text:p text:style-name=\'Table_20_Contents\'\n - tal:content=\'python:line_dict["base_price"]\'\n + tal:content="python: price_renderer(line_dict[\'base_price\'])"\n tal:attributes=\'text:style-name right_style_name\'>base_price</text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'float\'>\n + <table:table-cell table:style-name=\'Tableau1.A3\'\n + office:value-type=\'string\'\n + tal:condition="python: line_dict[\'base_price\'] == \'\'"> \n + <text:p text:style-name=\'Table_20_Contents\'/>\n + </table:table-cell>\n + <table:table-cell table:style-name=\'Tableau1.A3\'\n + tal:condition="python: line_dict[\'total_price\'] != \'\'"\n + office:value-type=\'float\'\n + tal:attributes=\'office:value line_dict/total_price\'>\n <text:p text:style-name=\'Table_20_Contents\'\n - tal:content=\'python:line_dict["total_price"]\'\n + tal:content="python: price_renderer(line_dict[\'total_price\'])"\n tal:attributes=\'text:style-name right_style_name\'>total_price</text:p>\n </table:table-cell>\n + <table:table-cell table:style-name=\'Tableau1.A3\'\n + office:value-type=\'string\'\n + tal:condition="python: line_dict[\'total_price\'] == \'\'"> \n + <text:p text:style-name=\'Table_20_Contents\'/>\n + </table:table-cell>\n </div>\n </table:table-row>\n <table:table-row table:style-name=\'Tableau1.5\'>\n @@ -572,12 +607,14 @@ AAA=</string> </value> <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'/>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau3.D2\' office:value-type=\'string\' tal:define=\'orig_string string:Total Excluding VAT; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau3.D2\' office:value-type=\'string\' tal:define=\'orig_string string:Total Excluding VAT; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau3.E2\' office:value-type=\'float\'>\n - <text:p text:style-name=\'Table_20_Contents_20_Right\' tal:content=\'python:data_dict["total_price_novat"]\'>800.000,00</text:p>\n + <table:table-cell table:style-name=\'Tableau3.E2\'\n + office:value-type=\'float\'\n + tal:attributes=\'office:value data_dict/total_price_novat\'>\n + <text:p text:style-name=\'Table_20_Contents_20_Right\' tal:content=\'python: price_renderer(data_dict["total_price_novat"])\'>800.000,00</text:p>\n </table:table-cell>\n </table:table-row>\n <table:table-row table:style-name=\'Tableau3.3\'>\n @@ -594,25 +631,23 @@ AAA=</string> </value> <table:table-cell table:style-name=\'Tableau3.D3\'\n office:value-type=\'string\'>\n <tal:block tal:repeat="vat python: data_dict[\'vat_list\']">\n - <tal:block tal:define="orig_string python:vat.getResourceTitle(); en_string python:here.Base_translateString(orig_string, lang=\'en\'); my_string python:here.Base_translateString(orig_string)">\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\'\n - tal:condition=\'python:my_string != en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n - </tal:block>\n + <text:p text:style-name=\'Table_20_Heading\'><span\n + tal:replace=\'vat/getResourceTitle\'/>:</text:p>\n </tal:block>\n <text:p text:style-name=\'Table_20_Heading\'\n - tal:define="orig_string string:TAX; en_string python:here.Base_translateString(orig_string, lang=\'en\'); my_string python:here.Base_translateString(orig_string)"><span tal:replace="python: \'Total %s\' % (my_string)"/>:</text:p>\n + tal:define=\'orig_string string:TAX; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'><span tal:replace="python: \'Total %s\' % (translated_message)"/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau3.E3\'\n office:value-type=\'float\'\n tal:attributes="office:value python: sum(total_vat_list)">\n <tal:block tal:repeat="vat python: data_dict[\'vat_list\']">\n - <text:p tal:define="vat_price python: vat.getPrice() * vat.getQuantity(); any python: total_vat_list.append(vat_price)"\n + <text:p tal:define="vat_price python: vat.getTotalPrice();\n + dummy python: total_vat_list.append(vat_price)"\n text:style-name=\'Table_20_Contents_20_Right\'\n - tal:content="vat_price">2000</text:p>\n + tal:content="python: price_renderer(vat_price)">2000</text:p>\n </tal:block>\n <text:p text:style-name=\'Table_20_Contents_20_Right\'\n - tal:content="python: sum(total_vat_list)">2000</text:p>\n + tal:content="python: price_renderer(sum(total_vat_list))">2000</text:p>\n </table:table-cell>\n </tal:block>\n </table:table-row>\n @@ -626,15 +661,43 @@ AAA=</string> </value> <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'/>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau3.D3\' office:value-type=\'string\' tal:define=\'orig_string string:Total Including VAT; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'en_string\'/>:</text:p>\n - <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:my_string!=en_string\'><span tal:replace=\'my_string\'/>:</text:p>\n + <table:table-cell table:style-name=\'Tableau3.D3\' office:value-type=\'string\' tal:define=\'orig_string string:Total Including VAT; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n + <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n </table:table-cell>\n <table:table-cell table:style-name=\'Tableau3.E3\' office:value-type=\'float\' tal:attributes="office:value python:data_dict[\'total_price_novat\'] + sum(total_vat_list)">\n + <!-- TODO: use getTotalNetPrice after supporting discount ? -->\n <text:p text:style-name=\'Table_20_Contents_20_Right\'\n - tal:content=\'python:data_dict["total_price_novat"] + sum(total_vat_list)\'>12345</text:p>\n + tal:content=\'python: price_renderer(data_dict["total_price_novat"] + sum(total_vat_list))\'>12345</text:p>\n </table:table-cell>\n </table:table-row>\n +\n + <!-- Bank Account information -->\n +\n + <table:table-row table:style-name="Tableau3.5" tal:condition="python: \'bank_name\' in data_dict">\n + <table:table-cell table:style-name="Tableau3.A5" office:value-type="string">\n + <text:p text:style-name="Table_20_Heading">Bank:</text:p><!-- XXX -->\n + </table:table-cell>\n + <table:table-cell table:style-name="Tableau3.B5" office:value-type="string">\n + <text:p text:style-name="P6" tal:content="data_dict/bank_name">My Bank Name</text:p>\n + <text:p text:style-name="Table_20_Contents_20_Left" tal:content="data_dict/bank_address"\n + tal:condition="data_dict/bank_address">bank addess</text:p>\n + <text:p text:style-name="Table_20_Contents_20_Left" tal:content="data_dict/bank_account_reference">bank account reference</text:p>\n + <text:p text:style-name="Table_20_Contents_20_Left" tal:content="data_dict/bank_account_description">bank account description</text:p>\n + </table:table-cell>\n + <table:table-cell table:style-name="Tableau3.A1" office:value-type="string">\n + <text:p text:style-name="Table_20_Contents"/>\n + </table:table-cell>\n + <table:table-cell table:style-name="Tableau3.A1" office:value-type="string">\n + <text:p text:style-name="Table_20_Contents"/>\n + </table:table-cell>\n + <table:table-cell table:style-name="Tableau3.A1" office:value-type="string">\n + <text:p text:style-name="Table_20_Contents"/>\n + </table:table-cell>\n + </table:table-row>\n +\n +\n +\n <table:table-row table:style-name=\'Tableau3.1\'>\n <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'/>\n @@ -652,26 +715,28 @@ AAA=</string> </value> <text:p text:style-name=\'Table_20_Contents\'/>\n </table:table-cell>\n </table:table-row>\n - <table:table-row table:style-name=\'Tableau3.6\'>\n - <table:table-cell table:style-name=\'Tableau3.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Notes; en_string python:unicode(here.Base_translateString(orig_string, lang="en"),"utf-8"); my_string python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n - <text:p text:style-name=\'P2\'><span tal:replace=\'en_string\'/><span tal:omit-tag=\'\' tal:condition=\'python:my_string!=en_string\'> / <span tal:replace=\'my_string\'/></span>:</text:p>\n + <table:table-row table:style-name=\'Tableau3.7\'>\n + <table:table-cell table:style-name=\'Tableau3.A7\' office:value-type=\'string\' tal:define=\'orig_string string:Notes; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n + <text:p text:style-name=\'P2\'><span tal:replace=\'orig_message\'/><span tal:omit-tag=\'\' tal:condition=\'python:translated_message != orig_message\'> / <span tal:replace=\'translated_message\'/></span>:</text:p>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau3.B6\' office:value-type=\'string\'>\n + <table:table-cell table:style-name=\'Tableau3.B7\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'/>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau3.B6\' office:value-type=\'string\'>\n + <table:table-cell table:style-name=\'Tableau3.B7\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'/>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau3.B6\' office:value-type=\'string\'>\n + <table:table-cell table:style-name=\'Tableau3.B7\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'/>\n </table:table-cell>\n - <table:table-cell table:style-name=\'Tableau3.E6\' office:value-type=\'string\'>\n + <table:table-cell table:style-name=\'Tableau3.E7\' office:value-type=\'string\'>\n <text:p text:style-name=\'Table_20_Contents\'/>\n </table:table-cell>\n </table:table-row>\n - <table:table-row table:style-name=\'Tableau3.7\'>\n - <table:table-cell table:style-name=\'Tableau3.A7\' table:number-columns-spanned=\'5\' office:value-type=\'string\'>\n - <text:p text:style-name=\'P3\' tal:content=\'python:data_dict["description"]\'>my_description</text:p>\n + <table:table-row table:style-name=\'Tableau3.8\'>\n + <table:table-cell table:style-name=\'Tableau3.A8\' table:number-columns-spanned=\'5\' office:value-type=\'string\'>\n + <text:p text:style-name=\'P3\'><tal:block tal:repeat="line data_dict/description"><tal:block\n + tal:replace="line"/><text:line-break tal:condition="not:repeat/line/end"/></tal:block>\n + </text:p>\n </table:table-cell>\n <table:covered-table-cell/>\n <table:covered-table-cell/>\n @@ -694,7 +759,8 @@ AAA=</string> </value> <text:p text:style-name=\'P4\'/>\n </office:text>\n </office:body>\n -</office:document-content> +</office:document-content>\n + ]]></string> </value> </item> diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewAsODTStyles.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewAsODTStyles.xml index 6f382fceb2e685aaf7fb31222c105bbd4b9eff2f..b70453e48829bd256042b126f56ab5025f268507 100644 --- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewAsODTStyles.xml +++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewAsODTStyles.xml @@ -126,7 +126,7 @@ AAA=</string> </value> </style:style>\n <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list"/>\n <style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="extra" style:master-page-name="">\n - <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:page-number="auto" fo:background-color="transparent" style:shadow="none" fo:keep-with-next="always">\n + <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-align="start" style:justify-single-word="false" style:register-true="true" style:page-number="auto" fo:background-color="transparent" style:shadow="none" fo:keep-with-next="always" style:vertical-align="auto">\n <style:tab-stops/>\n <style:background-image/>\n </style:paragraph-properties>\n @@ -186,11 +186,14 @@ AAA=</string> </value> </style:style>\n <style:style style:name="Header_20_Title" style:display-name="Header Title" style:family="paragraph" style:parent-style-name="Header_20_right" style:master-page-name="">\n <style:paragraph-properties style:page-number="auto" style:shadow="none"/>\n - <style:text-properties fo:text-transform="uppercase" fo:font-size="12pt"/>\n + <style:text-properties fo:text-transform="uppercase" fo:font-size="16pt"/>\n </style:style>\n <style:style style:name="Big_20_Table_20_Content" style:display-name="Big Table Content" style:family="paragraph" style:parent-style-name="Table_20_Contents">\n <style:text-properties fo:font-size="8pt" fo:font-weight="bold"/>\n </style:style>\n + <style:style style:name="Big_20_Table_20_Content_20_Left" style:display-name="Big Table Content Left" style:family="paragraph" style:parent-style-name="Big_20_Table_20_Content">\n + <style:paragraph-properties fo:margin-left="0.049cm" fo:margin-right="0cm" fo:text-align="start" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/>\n + </style:style>\n <style:style style:name="Item_20_Table_20_Title" style:display-name="Item Table Title" style:family="paragraph" style:parent-style-name="Table_20_Heading" style:class="extra">\n <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>\n <style:text-properties fo:font-size="7pt" style:font-weight-asian="normal" style:font-weight-complex="normal"/>\n @@ -215,6 +218,12 @@ AAA=</string> </value> <style:style style:name="Graphics" style:family="graphic">\n <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" style:wrap="dynamic" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>\n </style:style>\n + <style:style style:name="Header_20_Image" style:display-name="Header Image" style:family="graphic" style:parent-style-name="Graphics">\n + <style:graphic-properties svg:width="9.999cm" svg:height="0.049cm" text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0cm" fo:margin-right="0cm" style:run-through="foreground" style:wrap="right" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph" fo:background-color="transparent" style:background-transparency="100%" style:shadow="none">\n + <style:background-image/>\n + <style:columns fo:column-count="1" fo:column-gap="0cm"/>\n + </style:graphic-properties>\n + </style:style>\n <text:outline-style>\n <text:outline-level-style text:level="1" style:num-format="">\n <style:list-level-properties text:min-label-distance="0.381cm"/>\n @@ -252,6 +261,33 @@ AAA=</string> </value> <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>\n </office:styles>\n <office:automatic-styles>\n + <style:style style:name="Tableau4" style:family="table">\n + <style:table-properties style:width="19.001cm" table:align="margins" style:shadow="none"/>\n + </style:style>\n + <style:style style:name="Tableau4.A" style:family="table-column">\n + <style:table-column-properties style:column-width="6.334cm" style:rel-column-width="21845*"/>\n + </style:style>\n + <style:style style:name="Tableau4.B" style:family="table-column">\n + <style:table-column-properties style:column-width="6.334cm" style:rel-column-width="21844*"/>\n + </style:style>\n + <style:style style:name="Tableau4.1" style:family="table-row">\n + <style:table-row-properties style:min-row-height="1.723cm"/>\n + </style:style>\n + <style:style style:name="Tableau4.A1" style:family="table-cell">\n + <style:table-cell-properties fo:padding="0.097cm" fo:border="none"/>\n + </style:style>\n + <style:style style:name="Tableau4.A2" style:family="table-cell">\n + <style:table-cell-properties fo:padding="0.097cm" fo:border="none" style:vertical-align="middle"/>\n + </style:style>\n + <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents">\n + <style:text-properties style:font-name-asian="DejaVu Sans1" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans1" style:font-size-complex="14pt"/>\n + </style:style>\n + <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Header_20_right">\n + <style:text-properties style:font-name-asian="DejaVu Sans1" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans1" style:font-size-complex="14pt"/>\n + </style:style>\n + <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Header_20_Image">\n + <style:graphic-properties style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>\n + </style:style>\n <style:page-layout style:name="pm1">\n <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1cm" fo:margin-bottom="1cm" fo:margin-left="1cm" fo:margin-right="1cm" fo:background-color="transparent" style:writing-mode="lr-tb" style:footnote-max-height="0cm">\n <style:background-image/>\n @@ -271,49 +307,72 @@ AAA=</string> </value> <style:header-style/>\n <style:footer-style/>\n </style:page-layout>\n - <number:number-style style:name="N0">\n - <number:number number:min-integer-digits="1"/>\n - </number:number-style>\n </office:automatic-styles>\n <office:master-styles>\n <style:master-page style:name="Standard" style:page-layout-name="pm1">\n - <style:header tal:define="orig_title string:Invoice;\n - en_title python: unicode(here.Base_translateString(orig_title, lang=\'en\'), \'utf-8\');\n + <style:header tal:define="default_language python:test(request.get(\'international_form\'), \'en\', here.Localizer.get_selected_language());\n + orig_title string:Invoice;\n + en_title python: unicode(here.Base_translateString(orig_title, lang=default_language), \'utf-8\');\n my_title python: unicode(here.Base_translateString(orig_title), \'utf-8\');\n orig_page string:Page;\n - en_page python: unicode(here.Base_translateString(orig_page, lang=\'en\'), \'utf-8\');\n + en_page python: unicode(here.Base_translateString(orig_page, lang=default_language), \'utf-8\');\n my_page python: unicode(here.Base_translateString(orig_page), \'utf-8\');\n orig_of string:of;\n - en_of python: unicode(here.Base_translateString(orig_of, lang=\'en\'), \'utf-8\');\n + en_of python: unicode(here.Base_translateString(orig_of, lang=default_language), \'utf-8\');\n my_of python: unicode(here.Base_translateString(orig_of), \'utf-8\');\n - image_path python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_image_path\'] or data_dict[\'source_section_image_path\']">\n - <text:p>\n - <office:include_img tal:condition="image_path"\n - tal:attributes="path image_path"/>\n - </text:p>\n - <text:p text:style-name="Header"\n - tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_title\'] or data_dict[\'source_section_title\']">\n - </text:p>\n - <text:p text:style-name="Header"\n - tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_address\'] or data_dict[\'source_section_address\']">\n - </text:p>\n - <text:p text:style-name="Header"\n - tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_telfax\'] or data_dict[\'source_section_telfax\']">\n - </text:p>\n - <text:p text:style-name="Header"\n - tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_email\'] or data_dict[\'source_section_email\']">\n - </text:p>\n - <text:p text:style-name="Header"\n - tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_vatid\'] or data_dict[\'source_section_vatid\']">\n - </text:p>\n - <text:p text:style-name="Header_20_Title"\n - tal:content="en_title">\n - </text:p>\n - <text:p text:style-name="Header_20_right"\n - tal:content="my_title">\n - </text:p>\n - <text:p text:style-name="Header_20_right">\n - <text:p tal:replace="my_page"/><text:page-number text:select-page="current">1</text:page-number><text:p tal:replace="my_of"/><text:page-count>1</text:page-count></text:p>\n + image_path python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_image_path\'] or data_dict[\'source_decision_image_path\'];\n + image_width python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_image_width\'] or data_dict[\'source_decision_image_width\'];\n + image_height python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_section_image_height\'] or data_dict[\'source_decision_image_height\']">\n + <table:table table:name="Tableau4" table:style-name="Tableau4">\n + <table:table-column table:style-name="Tableau4.A"/>\n + <table:table-column table:style-name="Tableau4.B"/>\n + <table:table-column table:style-name="Tableau4.A"/>\n + <table:table-row table:style-name="Tableau4.1">\n + <table:table-cell table:style-name="Tableau4.A1" office:value-type="string">\n + <text:p text:style-name="P1">\n + <office:include_img tal:condition="image_path"\n + maxwidth="6cm"\n + maxheigth="2cm"\n + tal:attributes="path image_path;\n + draw:style-name string:fr1;\n + draw:z-index string:0;\n + text:anchor-type string:paragraph;\n + width image_width;\n + height image_height"/>\n + </text:p>\n + </table:table-cell>\n + <table:table-cell table:style-name="Tableau4.A2" office:value-type="string">\n + <text:p text:style-name="Big_20_Table_20_Content_20_Left"\n + tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_administration_title\'] or data_dict[\'source_administration_title\']">\n + </text:p>\n + <text:p text:style-name="Header"\n + tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_administration_address\'] or data_dict[\'source_administration_address\']">\n + </text:p>\n + <text:p text:style-name="Header"\n + tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_administration_telfax\'] or data_dict[\'source_administration_telfax\']">\n + </text:p>\n + <text:p text:style-name="Header"\n + tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_administration_email\'] or data_dict[\'source_administration_email\']">\n + </text:p>\n + <text:p text:style-name="Header"\n + tal:content="python: here.getPortalType().startswith(\'Purchase\') and data_dict[\'destination_administration_vatid\'] or data_dict[\'source_administration_vatid\']">\n + </text:p>\n + </table:table-cell>\n + <table:table-cell table:style-name="Tableau4.A1" office:value-type="string">\n + <text:p text:style-name="Header_20_Title"\n + tal:content="en_title">\n + </text:p>\n + <text:p text:style-name="Header_20_right"\n + tal:content="my_title" tal:condition="python: my_title != en_title">\n + </text:p>\n + <text:p text:style-name="Header_20_right">\n + <text:p tal:replace="my_page"/>\n + <text:page-number text:select-page="current">1</text:page-number>\n + <text:p tal:replace="my_of"/>\n + <text:page-count>1</text:page-count></text:p>\n + </table:table-cell>\n + </table:table-row>\n + </table:table>\n </style:header>\n <style:footer>\n <text:p text:style-name="Footer">Generated with ERP5 \xe2\x80\x93 Open Source ERP suite (www.erp5.org)</text:p>\n diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog.xml index a71ea364607e204beea93c44dda58d58b6fcc671..daf168c1f73137358002d3dff822b63231627041 100644 --- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog.xml +++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog.xml @@ -88,6 +88,7 @@ <value> <list> <string>your_target_language</string> + <string>your_international_form</string> </list> </value> </item> @@ -130,6 +131,12 @@ <key> <string>title</string> </key> <value> <string>Print Invoice</string> </value> </item> + <item> + <key> <string>uid</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>unicode_mode</string> </key> <value> <int>0</int> </value> diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog/your_format.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog/your_format.xml index 474bcbd96cc532bd69deeff061885351d8fb4b2d..2a406bc480cae16ab97cd25879b0a1fb7ca7ff4a 100644 --- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog/your_format.xml +++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog/your_format.xml @@ -85,6 +85,10 @@ <key> <string>values</string> </key> <value> <dictionary> + <item> + <key> <string>description</string> </key> + <value> <string>printing format</string> </value> + </item> <item> <key> <string>enabled</string> </key> <value> <int>1</int> </value> @@ -107,6 +111,10 @@ <key> <string>target</string> </key> <value> <string>Click to edit the target</string> </value> </item> + <item> + <key> <string>title</string> </key> + <value> <string>Format</string> </value> + </item> </dictionary> </value> </item> diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog/your_international_form.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog/your_international_form.xml new file mode 100644 index 0000000000000000000000000000000000000000..7d0579f65db63621436d68153488ee97682d6200 --- /dev/null +++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/Invoice_viewODTPrintDialog/your_international_form.xml @@ -0,0 +1,171 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <global name="CheckBoxField" module="Products.Formulator.StandardFields"/> + <tuple/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>your_international_form</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string>Include english and translated version of all terms.</string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>International Form</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_invoicing/bt/revision b/bt5/erp5_invoicing/bt/revision index 97e35041104a8d82c502ddb40b240e68f392c0d1..d25720879e9d5b2c8db60c8e908af0c01017e831 100644 --- a/bt5/erp5_invoicing/bt/revision +++ b/bt5/erp5_invoicing/bt/revision @@ -1 +1 @@ -110 \ No newline at end of file +112 \ No newline at end of file