This question has been flagged
2 Replies
3455 Views

I have a problem when I make a quotation with a product or services which the description is so long that the PDF generated will need two pages to display the description : it results that the product description is not cut properly on the second page of the PDF and appear to be over the company name ...

Problem is visibile here : https://imgur.com/a/EoFjfQg

how to solve this?


Avatar
Discard
Author Best Answer

@ibrahim Where to try this ?

@ibrahim, can you specify where I can edit those line ? Is it in a python file or is it in a settings in the admin ? Where ?

Thanks

Avatar
Discard

replace the part you call your description field in the report with the code in my answer.

you probably have added something like this :

<span t-field="o.YourdescriptionField"/>

instead, add my code and tell me if it works for you.

Author

@Ibrahim, where do I find the area to modify ? In a python file or in a settings (where in this case?)

Author

@ibrahim, I suppose we are talking about this code: can you please highlight which line I should modify :

CODE:

<?xml version="1.0"?>

<t t-name="sale.report_saleorder_document">

<t t-call="report.external_layout">

<t t-set="doc" t-value="doc.with_context({'lang':doc.partner_id.lang})"/>

<div class="page">

<div class="oe_structure"/>

<div class="row">

<div class="col-xs-6">

<strong t-if="doc.partner_shipping_id == doc.partner_invoice_id">Invoicing and shipping address:</strong>

<strong t-if="doc.partner_shipping_id != doc.partner_invoice_id">Invoicing address:</strong>

<div t-field="doc.partner_invoice_id" t-options="{&quot;widget&quot;: &quot;contact&quot;, &quot;fields&quot;: [&quot;address&quot;, &quot;name&quot;, &quot;phone&quot;, &quot;fax&quot;], &quot;no_marker&quot;: True, &quot;phone_icons&quot;: True}"/>

<p t-if="doc.partner_invoice_id.vat">VAT: <span t-field="doc.partner_invoice_id.vat"/></p>

<div t-if="doc.partner_shipping_id != doc.partner_invoice_id" class="mt8">

<strong>Shipping address:</strong>

<div t-field="doc.partner_shipping_id" t-options="{&quot;widget&quot;: &quot;contact&quot;, &quot;fields&quot;: [&quot;address&quot;, &quot;name&quot;, &quot;phone&quot;, &quot;fax&quot;], &quot;no_marker&quot;: True, &quot;phone_icons&quot;: True}"/>

<p t-if="doc.partner_shipping_id.vat">VAT: <span t-field="doc.partner_shipping_id.vat"/></p>

</div>

</div>

<div class="col-xs-5 col-xs-offset-1">

<div t-field="doc.partner_id" t-options="{&quot;widget&quot;: &quot;contact&quot;, &quot;fields&quot;: [&quot;address&quot;, &quot;name&quot;], &quot;no_marker&quot;: True}"/>

</div>

</div>

<h2>

<span t-if="doc.state not in ['draft','sent']">Order # </span>

<span t-if="doc.state in ['draft','sent']">Quotation # </span>

<span t-field="doc.name"/>

</h2>

<div class="row mt32 mb32" id="informations">

<div t-if="doc.client_order_ref" class="col-xs-3">

<strong>Your Reference:</strong>

<p t-field="doc.client_order_ref"/>

</div>

<div t-if="doc.date_order" class="col-xs-3">

<strong t-if="doc.state not in ['draft','sent']">Date Ordered:</strong>

<strong t-if="doc.state in ['draft','sent']">Quotation Date:</strong>

<p t-field="doc.date_order"/>

</div>

<div t-if="doc.user_id.name" class="col-xs-3">

<strong>Salesperson:</strong>

<p t-field="doc.user_id"/>

</div>

<div name="payment_term" t-if="doc.payment_term_id" class="col-xs-3">

<strong>Payment Terms:</strong>

<p t-field="doc.payment_term_id"/>

</div>

</div>

<!-- Is there a discount on at least one line? -->

<t t-set="display_discount" t-value="any([l.discount for l in doc.order_line])"/>

<t t-foreach="doc.order_lines_layouted()" t-as="page">

<table class="table table-condensed">

<thead>

<tr>

<th>Description</th>

<th class="text-right">Quantity</th>

<th class="text-right">Unit Price</th>

<th t-if="display_discount" class="text-right" groups="sale.group_discount_per_so_line">Disc.(%)</th>

<th class="text-right">Taxes</th>

<th class="text-right" groups="sale.group_show_price_subtotal">Price</th>

<th class="text-right price_tax_included" groups="sale.group_show_price_total">Total Price</th>

</tr>

</thead>

<tbody class="sale_tbody">

<t t-foreach="page" t-as="layout_category">

<t t-if="layout_category_size &gt; 1 or page_size &gt; 1" groups="sale.group_sale_layout">

<tr class="active">

<td colspan="7" style="font-weight: bold; border-bottom: 1px solid black;">&amp;bull;

<t t-esc="layout_category['name']"/>

</td>

</tr>

</t>

<!-- Lines associated -->

<t t-foreach="layout_category['lines']" t-as="l">

<tr>

<td><span t-field="l.name"/></td>

<td class="text-right">

<span t-field="l.product_uom_qty"/>

<span t-field="l.product_uom" groups="product.group_uom"/>

</td>

<td class="text-right">

<span t-field="l.price_unit"/>

</td>

<td t-if="display_discount" class="text-right" groups="sale.group_discount_per_so_line">

<span t-field="l.discount"/>

</td>

<td class="text-right">

<span t-esc="', '.join(map(lambda x: (x.description or x.name), l.tax_id))"/>

</td>

<td class="text-right" groups="sale.group_show_price_subtotal">

<span t-field="l.price_subtotal" t-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: doc.pricelist_id.currency_id}"/>

</td>

<td class="text-right" groups="sale.group_show_price_total">

<span t-field="l.price_total" t-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: doc.pricelist_id.currency_id}"/>

</td>

</tr>

</t>

<t t-if="(layout_category_size &gt; 1 or page_size &gt; 1) and layout_category['subtotal']" groups="sale.group_sale_layout">

<tr class="text-right">

<td colspan="6">

<strong>Subtotal: </strong>

<t t-set="subtotal" t-value="sum(line.price_subtotal for line in layout_category['lines'])"/>

<span t-esc="subtotal" t-options="{'widget': 'monetary', 'display_currency': doc.pricelist_id.currency_id}"/>

</td>

</tr>

</t>

</t>

</tbody>

</table>

<t t-if="page_index &lt; page_size - 1" groups="sale.group_sale_layout">

<p style="page-break-before:always;"> </p>

</t>

</t>

<div class="row" name="total">

<div class="col-xs-4 pull-right">

<table class="table table-condensed">

<tr class="border-black">

<td><strong>Total Without Taxes</strong></td>

<td class="text-right">

<span t-field="doc.amount_untaxed" t-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: doc.pricelist_id.currency_id}"/>

</td>

</tr>

<t t-foreach="doc._get_tax_amount_by_group()" t-as="amount_by_group">

<tr>

<td><span t-esc="amount_by_group[0] or 'Taxes'"/></td>

<td class="text-right">

<span t-esc="amount_by_group[1]" t-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: doc.pricelist_id.currency_id}"/>

</td>

</tr>

</t>

<tr class="border-black">

<td><strong>Total</strong></td>

<td class="text-right">

<span t-field="doc.amount_total" t-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: doc.pricelist_id.currency_id}"/>

</td>

</tr>

</table>

</div>

</div>

<p t-field="doc.note"/>

<p t-if="doc.payment_term_id.note">

<span t-field="doc.payment_term_id.note"/>

</p>

<p id="fiscal_position_remark" t-if="doc.fiscal_position_id and doc.fiscal_position_id.note">

<strong>Fiscal Position Remark:</strong>

<span t-field="doc.fiscal_position_id.note"/>

</p>

<div class="oe_structure"/>

</div>

</t>

</t>

/CODE

Author

Problem comes precisely from this : <tr>

<th>Description</th>

<th class="text-right">Quantity</th>

<th class="text-right">Unit Price</th>

<th t-if="display_discount" class="text-right" groups="sale.group_discount_per_so_line">Disc.(%)</th>

<th class="text-right">Taxes</th>

<th class="text-right" groups="sale.group_show_price_subtotal">Price</th>

<th class="text-right price_tax_included" groups="sale.group_show_price_total">Total Price</th>

</tr>

</thead>

This get overlap on the second page by the product description which continue from page 1 to page 2

Author

Problem is visible here: https://imgur.com/a/EoFjfQg

Best Answer

Hi, 
can you try this : 

<div style="page-break-inside: avoid;margin-top:5%">

     <t t-if='YourCommentField'>

          <p style="font-size:15px;">              

                <span t-field="YourCommentField"/>

          </p>

     </t>

let me now what if this works for you.

Thanks.

Avatar
Discard