Jump to content

Number of products per page in invoice


nicola10

Recommended Posts

Thank you for reply rocky

 

In pdf/invoice.product-tab.tpl I found:

 

    <!-- PRODUCTS -->
    {foreach $order_details as $order_detail}
        {cycle values=["color_line_even", "color_line_odd"] assign=bgcolor_class}

 

But I don't know how to implement the "page break" if the number of items in invoice is greater than 7

Link to comment
Share on other sites

I'm not sure exactly how to create page breaks. You can try the following to see if it works:

<!-- PRODUCTS -->
{foreach from=$order_details item='order_detail' name='order_details'}
    {cycle values=["color_line_even", "color_line_odd"] assign=bgcolor_class}
    {if $smarty.foreach.order_details.iteration % 7 == 6}
​    <br pagebreak="true" />
​    {/if}
Link to comment
Share on other sites

Thank you rocky!

 

I tried your code and I opened a pdf of an invoice with 13 items and the invoice was divided into 3 pages:

 

First page: 5 items and the ? symbol after the last item

 

Second page: 7 items and the ? symbol after the last item and in the same row of the first item

 

Third page: 1 item with the ? symbol in the same row of the first item

 

So I tried to modify

 

From

 

{if $smarty.foreach.order_details.iteration % 7 == 6}

 

To

 

{if $smarty.foreach.order_details.index % 7 == 6}

 

I opened the same pdf and the invoice was divided into 2 pages:

 

First page: 6 items and the ? symbol after the last item

 

Second page: 7 item with the ? symbol in the same row of the first item

 

Why it shows the symbol "?" ?

 

Is It correct to use index instead iteration?

Link to comment
Share on other sites

Try the following:

{*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2016 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
<!-- PRODUCTS -->
{foreach from=$order_details item='order_detail' name='order_details'}
        {if $smarty.foreach.order_details.index % 7 == 0}
        {if !$smarty.foreach.order_details.first}<br pagebreak="true" />{/if}
<table class="product" width="100%" cellpadding="4" cellspacing="0">

	<thead>
	<tr>
		<th class="product header small" width="{$layout.reference.width}%">{l s='Reference' pdf='true'}</th>
		<th class="product header small" width="{$layout.product.width}%">{l s='Product' pdf='true'}</th>
		<th class="product header small" width="{$layout.tax_code.width}%">{l s='Tax Rate' pdf='true'}</th>

		{if isset($layout.before_discount)}
			<th class="product header small" width="{$layout.unit_price_tax_excl.width}%">{l s='Base price' pdf='true'} <br /> {l s='(Tax excl.)' pdf='true'}</th>
		{/if}

		<th class="product header-right small" width="{$layout.unit_price_tax_excl.width}%">{l s='Unit Price' pdf='true'} <br /> {l s='(Tax excl.)' pdf='true'}</th>
		<th class="product header small" width="{$layout.quantity.width}%">{l s='Qty' pdf='true'}</th>
		<th class="product header-right small" width="{$layout.total_tax_excl.width}%">{l s='Total' pdf='true'} <br /> {l s='(Tax excl.)' pdf='true'}</th>
	</tr>
	</thead>

	<tbody>
    {/if}
        {cycle values=["color_line_even", "color_line_odd"] assign=bgcolor_class}
		<tr class="product {$bgcolor_class}">

			<td class="product center">
				{$order_detail.product_reference}
			</td>
			<td class="product left">
				{if $display_product_images}
					<table width="100%">
						<tr>
							<td width="15%">
								{if isset($order_detail.image) && $order_detail.image->id}
									{$order_detail.image_tag}
								{/if}
							</td>
							<td width="5%"> </td>
							<td width="80%">
								{$order_detail.product_name}
							</td>
						</tr>
					</table>
				{else}
					{$order_detail.product_name}
				{/if}

			</td>
			<td class="product center">
				{$order_detail.order_detail_tax_label}
			</td>

			{if isset($layout.before_discount)}
				<td class="product center">
					{if isset($order_detail.unit_price_tax_excl_before_specific_price)}
						{displayPrice currency=$order->id_currency price=$order_detail.unit_price_tax_excl_before_specific_price}
					{else}
						--
					{/if}
				</td>
			{/if}

			<td class="product right">
				{displayPrice currency=$order->id_currency price=$order_detail.unit_price_tax_excl_including_ecotax}
				{if $order_detail.ecotax_tax_excl > 0}
					<br>
					<small>[spam-filter]displayPrice currency=$order->id_currency price=$order_detail.ecotax_tax_excl}|string_format:{l s='ecotax: %s' pdf='true'[spam-filter]</small>
				{/if}
			</td>
			<td class="product center">
				{$order_detail.product_quantity}
			</td>
			<td  class="product right">
				{displayPrice currency=$order->id_currency price=$order_detail.total_price_tax_excl_including_ecotax}
			</td>
		</tr>

		{foreach $order_detail.customizedDatas as $customizationPerAddress}
			{foreach $customizationPerAddress as $customizationId => $customization}
				<tr class="customization_data {$bgcolor_class}">
					<td class="center">  </td>

					<td>
						{if isset($customization.datas[$smarty.const._CUSTOMIZE_TEXTFIELD_]) && count($customization.datas[$smarty.const._CUSTOMIZE_TEXTFIELD_]) > 0}
							<table style="width: 100%;">
								{foreach $customization.datas[$smarty.const._CUSTOMIZE_TEXTFIELD_] as $customization_infos}
									<tr>
										<td style="width: 30%;">
											{$customization_infos.name|string_format:{l s='%s:' pdf='true'[spam-filter]
										</td>
										<td>{$customization_infos.value}</td>
									</tr>
								{/foreach}
							</table>
						{/if}

						{if isset($customization.datas[$smarty.const._CUSTOMIZE_FILE_]) && count($customization.datas[$smarty.const._CUSTOMIZE_FILE_]) > 0}
							<table style="width: 100%;">
								<tr>
									<td style="width: 70%;">{l s='image(s):' pdf='true'}</td>
									<td>{count($customization.datas[$smarty.const._CUSTOMIZE_FILE_])}</td>
								</tr>
							</table>
						{/if}
					</td>

					<td class="center">
						({if $customization.quantity == 0}1{else}{$customization.quantity}{/if})
					</td>

					{assign var=end value=($layout._colCount-3)}
					{for $var=0 to $end}
						<td class="center">
							--
						</td>
					{/for}

				</tr>
				<!--if !$smarty.foreach.custo_foreach.last-->
			{/foreach}
		{/foreach}
        {if !$smarty.foreach.order_details.last && $smarty.foreach.order_details.index % 7 == 6}
        </tbody>
        </table>
        {/if}
	{/foreach}
	<!-- END PRODUCTS -->

	<!-- CART RULES -->

	{assign var="shipping_discount_tax_incl" value="0"}
	{foreach from=$cart_rules item=cart_rule name="cart_rules_loop"}
		{if $smarty.foreach.cart_rules_loop.first}
		<tr class="discount">
			<th class="header" colspan="{$layout._colCount}">
				{l s='Discounts' pdf='true'}
			</th>
		</tr>
		{/if}
		<tr class="discount">
			<td class="white right" colspan="{$layout._colCount - 1}">
				{$cart_rule.name}
			</td>
			<td class="right white">
				- {displayPrice currency=$order->id_currency price=$cart_rule.value_tax_excl}
			</td>
		</tr>
	{/foreach}

	</tbody>

</table>
Link to comment
Share on other sites

  • 2 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...