danyw3b Posted June 25, 2019 Share Posted June 25, 2019 Visualizzo correttamente il codice fiscale nella mia fattura, ma prima di esso, vorrei aggiungere la dicitura "C.F.", qualcuno mi darebbe una mano?Questo è il mio codice: HTMLTemplateInvoice.php <?php /** * 2007-2018 PrestaShop. * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 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: * https://opensource.org/licenses/OSL-3.0 * 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-2018 PrestaShop SA * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ /** * @since 1.5 */ class HTMLTemplateInvoiceCore extends HTMLTemplate { public $order; public $order_invoice; public $available_in_your_account = false; /** * @param OrderInvoice $order_invoice * @param $smarty * * @throws PrestaShopException */ public function __construct(OrderInvoice $order_invoice, $smarty, $bulk_mode = false) { $this->order_invoice = $order_invoice; $this->order = new Order((int) $this->order_invoice->id_order); $this->smarty = $smarty; // If shop_address is null, then update it with current one. // But no DB save required here to avoid massive updates for bulk PDF generation case. // (DB: bug fixed in 1.6.1.1 with upgrade SQL script to avoid null shop_address in old orderInvoices) if (!isset($this->order_invoice->shop_address) || !$this->order_invoice->shop_address) { $this->order_invoice->shop_address = OrderInvoice::getCurrentFormattedShopAddress((int) $this->order->id_shop); if (!$bulk_mode) { OrderInvoice::fixAllShopAddresses(); } } // header informations $this->date = Tools::displayDate($order_invoice->date_add); $id_lang = Context::getContext()->language->id; $this->title = $order_invoice->getInvoiceNumberFormatted($id_lang); $this->shop = new Shop((int) $this->order->id_shop); } /** * Returns the template's HTML header. * * @return string HTML header */ public function getHeader() { $this->assignCommonHeaderData(); $this->smarty->assign(array('header' => Context::getContext()->getTranslator()->trans('Invoice', array(), 'Shop.Pdf'))); return $this->smarty->fetch($this->getTemplate('header')); } /** * Compute layout elements size. * * @param $params Array Layout elements * * @return array Layout elements columns size */ protected function computeLayout($params) { $layout = array( 'reference' => array( 'width' => 15, ), 'product' => array( 'width' => 40, ), 'quantity' => array( 'width' => 8, ), 'tax_code' => array( 'width' => 8, ), 'unit_price_tax_excl' => array( 'width' => 0, ), 'total_tax_excl' => array( 'width' => 0, ), ); if (isset($params['has_discount']) && $params['has_discount']) { $layout['before_discount'] = array('width' => 0); $layout['product']['width'] -= 7; $layout['reference']['width'] -= 3; } $total_width = 0; $free_columns_count = 0; foreach ($layout as $data) { if ($data['width'] === 0) { ++$free_columns_count; } $total_width += $data['width']; } $delta = 100 - $total_width; foreach ($layout as $row => $data) { if ($data['width'] === 0) { $layout[$row]['width'] = $delta / $free_columns_count; } } $layout['_colCount'] = count($layout); return $layout; } /** * Returns the template's HTML content. * * @return string HTML content */ public function getContent() { $invoiceAddressPatternRules = json_decode(Configuration::get('PS_INVCE_INVOICE_ADDR_RULES'), true); $deliveryAddressPatternRules = json_decode(Configuration::get('PS_INVCE_DELIVERY_ADDR_RULES'), true); $invoice_address = new Address((int) $this->order->id_address_invoice); $country = new Country((int) $invoice_address->id_country); $formatted_invoice_address = AddressFormat::generateAddress($invoice_address, $invoiceAddressPatternRules, '<br />', ' '); $delivery_address = null; $formatted_delivery_address = ''; if (isset($this->order->id_address_delivery) && $this->order->id_address_delivery) { $delivery_address = new Address((int) $this->order->id_address_delivery); $formatted_delivery_address = AddressFormat::generateAddress($delivery_address, $deliveryAddressPatternRules, '<br />', ' '); } $customer = new Customer((int) $this->order->id_customer); $carrier = new Carrier((int) $this->order->id_carrier); $order_details = $this->order_invoice->getProducts(); $has_discount = false; foreach ($order_details as $id => &$order_detail) { // Find out if column 'price before discount' is required if ($order_detail['reduction_amount_tax_excl'] > 0) { $has_discount = true; $order_detail['unit_price_tax_excl_before_specific_price'] = $order_detail['unit_price_tax_excl_including_ecotax'] + $order_detail['reduction_amount_tax_excl']; } elseif ($order_detail['reduction_percent'] > 0) { $has_discount = true; if ($order_detail['reduction_percent'] == 100) { $order_detail['unit_price_tax_excl_before_specific_price'] = 0; } else { $order_detail['unit_price_tax_excl_before_specific_price'] = (100 * $order_detail['unit_price_tax_excl_including_ecotax']) / (100 - $order_detail['reduction_percent']); } } // Set tax_code $taxes = OrderDetail::getTaxListStatic($id); $tax_temp = array(); foreach ($taxes as $tax) { $obj = new Tax($tax['id_tax']); $translator = Context::getContext()->getTranslator(); $tax_temp[] = $translator->trans( '%taxrate%%space%%', array( '%taxrate%' => ($obj->rate + 0), '%space%' => ' ', ), 'Shop.Pdf' ); } $order_detail['order_detail_tax'] = $taxes; $order_detail['order_detail_tax_label'] = implode(', ', $tax_temp); } unset($tax_temp); unset($order_detail); if (Configuration::get('PS_PDF_IMG_INVOICE')) { foreach ($order_details as &$order_detail) { if ($order_detail['image'] != null) { $name = 'product_mini_' . (int) $order_detail['product_id'] . (isset($order_detail['product_attribute_id']) ? '_' . (int) $order_detail['product_attribute_id'] : '') . '.jpg'; $path = _PS_PROD_IMG_DIR_ . $order_detail['image']->getExistingImgPath() . '.jpg'; $order_detail['image_tag'] = preg_replace( '/\.*' . preg_quote(__PS_BASE_URI__, '/') . '/', _PS_ROOT_DIR_ . DIRECTORY_SEPARATOR, ImageManager::thumbnail($path, $name, 45, 'jpg', false), 1 ); if (file_exists(_PS_TMP_IMG_DIR_ . $name)) { $order_detail['image_size'] = getimagesize(_PS_TMP_IMG_DIR_ . $name); } else { $order_detail['image_size'] = false; } } } unset($order_detail); // don't overwrite the last order_detail later } $cart_rules = $this->order->getCartRules($this->order_invoice->id); $free_shipping = false; foreach ($cart_rules as $key => $cart_rule) { if ($cart_rule['free_shipping']) { $free_shipping = true; /* * Adjust cart rule value to remove the amount of the shipping. * We're not interested in displaying the shipping discount as it is already shown as "Free Shipping". */ $cart_rules[$key]['value_tax_excl'] -= $this->order_invoice->total_shipping_tax_excl; $cart_rules[$key]['value'] -= $this->order_invoice->total_shipping_tax_incl; /* * Don't display cart rules that are only about free shipping and don't create * a discount on products. */ if ($cart_rules[$key]['value'] == 0) { unset($cart_rules[$key]); } } } $product_taxes = 0; foreach ($this->order_invoice->getProductTaxesBreakdown($this->order) as $details) { $product_taxes += $details['total_amount']; } $product_discounts_tax_excl = $this->order_invoice->total_discount_tax_excl; $product_discounts_tax_incl = $this->order_invoice->total_discount_tax_incl; if ($free_shipping) { $product_discounts_tax_excl -= $this->order_invoice->total_shipping_tax_excl; $product_discounts_tax_incl -= $this->order_invoice->total_shipping_tax_incl; } $products_after_discounts_tax_excl = $this->order_invoice->total_products - $product_discounts_tax_excl; $products_after_discounts_tax_incl = $this->order_invoice->total_products_wt - $product_discounts_tax_incl; $shipping_tax_excl = $free_shipping ? 0 : $this->order_invoice->total_shipping_tax_excl; $shipping_tax_incl = $free_shipping ? 0 : $this->order_invoice->total_shipping_tax_incl; $shipping_taxes = $shipping_tax_incl - $shipping_tax_excl; $wrapping_taxes = $this->order_invoice->total_wrapping_tax_incl - $this->order_invoice->total_wrapping_tax_excl; $total_taxes = $this->order_invoice->total_paid_tax_incl - $this->order_invoice->total_paid_tax_excl; $footer = array( 'products_before_discounts_tax_excl' => $this->order_invoice->total_products, 'product_discounts_tax_excl' => $product_discounts_tax_excl, 'products_after_discounts_tax_excl' => $products_after_discounts_tax_excl, 'products_before_discounts_tax_incl' => $this->order_invoice->total_products_wt, 'product_discounts_tax_incl' => $product_discounts_tax_incl, 'products_after_discounts_tax_incl' => $products_after_discounts_tax_incl, 'product_taxes' => $product_taxes, 'shipping_tax_excl' => $shipping_tax_excl, 'shipping_taxes' => $shipping_taxes, 'shipping_tax_incl' => $shipping_tax_incl, 'wrapping_tax_excl' => $this->order_invoice->total_wrapping_tax_excl, 'wrapping_taxes' => $wrapping_taxes, 'wrapping_tax_incl' => $this->order_invoice->total_wrapping_tax_incl, 'ecotax_taxes' => $total_taxes - $product_taxes - $wrapping_taxes - $shipping_taxes, 'total_taxes' => $total_taxes, 'total_paid_tax_excl' => $this->order_invoice->total_paid_tax_excl, 'total_paid_tax_incl' => $this->order_invoice->total_paid_tax_incl, ); foreach ($footer as $key => $value) { $footer[$key] = Tools::ps_round($value, _PS_PRICE_COMPUTE_PRECISION_, $this->order->round_mode); } /** * Need the $round_mode for the tests. */ $round_type = null; switch ($this->order->round_type) { case Order::ROUND_TOTAL: $round_type = 'total'; break; case Order::ROUND_LINE: $round_type = 'line'; break; case Order::ROUND_ITEM: $round_type = 'item'; break; default: $round_type = 'line'; break; } $display_product_images = Configuration::get('PS_PDF_IMG_INVOICE'); $tax_excluded_display = Group::getPriceDisplayMethod($customer->id_default_group); $layout = $this->computeLayout(array('has_discount' => $has_discount)); $state_invo = (new State($invoice_address->id_state))->name; /* Get invoice State name from ID */ $state_deli = (new State($delivery_address->id_state))->name; /* Get delivery State name from ID */ $legal_free_text = Hook::exec('displayInvoiceLegalFreeText', array('order' => $this->order)); if (!$legal_free_text) { $legal_free_text = Configuration::get('PS_INVOICE_LEGAL_FREE_TEXT', (int) Context::getContext()->language->id, null, (int) $this->order->id_shop); } $data = array( 'order' => $this->order, 'order_invoice' => $this->order_invoice, 'order_details' => $order_details, 'carrier' => $carrier, 'cart_rules' => $cart_rules, 'delivery_address' => $formatted_delivery_address, 'invoice_address' => $formatted_invoice_address, 'addresses' => array('invoice' => $invoice_address, 'delivery' => $delivery_address), 'tax_excluded_display' => $tax_excluded_display, 'display_product_images' => $display_product_images, 'layout' => $layout, 'tax_tab' => $this->getTaxTabContent(), 'customer' => $customer, 'footer' => $footer, 'ps_price_compute_precision' => _PS_PRICE_COMPUTE_PRECISION_, 'round_type' => $round_type, 'legal_free_text' => $legal_free_text, /* Start mod for custom address format */ 'firstname_invo' => $invoice_address->firstname, 'lastname_invo' => $invoice_address->lastname, 'company_invo' => $invoice_address->company, 'address1_invo' => $invoice_address->address1, 'address2_invo' => $invoice_address->address2, 'postcode_invo' => $invoice_address->postcode, 'city_invo' => $invoice_address->city, 'state_name_invo' => $state_invo, 'country_name_invo' => $invoice_address->country, 'phone_invo' => $invoice_address->phone, 'phone_mobile_invo' => $invoice_address->phone_mobile, 'vat_number_invo' => $invoice_address->vat_number, 'dni_invo' => $invoice_address->dni, 'firstname_deli' => $delivery_address->firstname, 'lastname_deli' => $delivery_address->lastname, 'company_deli' => $delivery_address->company, 'address1_deli' => $delivery_address->address1, 'address2_deli' => $delivery_address->address2, 'postcode_deli' => $delivery_address->postcode, 'city_deli' => $delivery_address->city, 'state_name_deli' => $state_deli, 'country_name_deli' => $delivery_address->country, 'phone_deli' => $delivery_address->phone, 'phone_mobile_deli' => $delivery_address->phone_mobile, /* End mod for custom address format */ ); if (Tools::getValue('debug')) { die(json_encode($data)); } $this->smarty->assign($data); $tpls = array( 'style_tab' => $this->smarty->fetch($this->getTemplate('invoice.style-tab')), 'addresses_tab' => $this->smarty->fetch($this->getTemplate('invoice.addresses-tab')), 'summary_tab' => $this->smarty->fetch($this->getTemplate('invoice.summary-tab')), 'product_tab' => $this->smarty->fetch($this->getTemplate('invoice.product-tab')), 'tax_tab' => $this->getTaxTabContent(), 'payment_tab' => $this->smarty->fetch($this->getTemplate('invoice.payment-tab')), 'note_tab' => $this->smarty->fetch($this->getTemplate('invoice.note-tab')), 'total_tab' => $this->smarty->fetch($this->getTemplate('invoice.total-tab')), 'shipping_tab' => $this->smarty->fetch($this->getTemplate('invoice.shipping-tab')), ); $this->smarty->assign($tpls); return $this->smarty->fetch($this->getTemplateByCountry($country->iso_code)); } /** * Returns the tax tab content. * * @return string Tax tab html content */ public function getTaxTabContent() { $debug = Tools::getValue('debug'); $address = new Address((int) $this->order->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); $tax_exempt = Configuration::get('VATNUMBER_MANAGEMENT') && !empty($address->vat_number) && $address->id_country != Configuration::get('VATNUMBER_COUNTRY'); $carrier = new Carrier($this->order->id_carrier); $tax_breakdowns = $this->getTaxBreakdown(); $data = array( 'tax_exempt' => $tax_exempt, 'use_one_after_another_method' => $this->order_invoice->useOneAfterAnotherTaxComputationMethod(), 'display_tax_bases_in_breakdowns' => $this->order_invoice->displayTaxBasesInProductTaxesBreakdown(), 'product_tax_breakdown' => $this->order_invoice->getProductTaxesBreakdown($this->order), 'shipping_tax_breakdown' => $this->order_invoice->getShippingTaxesBreakdown($this->order), 'ecotax_tax_breakdown' => $this->order_invoice->getEcoTaxTaxesBreakdown(), 'wrapping_tax_breakdown' => $this->order_invoice->getWrappingTaxesBreakdown(), 'tax_breakdowns' => $tax_breakdowns, 'order' => $debug ? null : $this->order, 'order_invoice' => $debug ? null : $this->order_invoice, 'carrier' => $debug ? null : $carrier, ); if ($debug) { return $data; } $this->smarty->assign($data); return $this->smarty->fetch($this->getTemplate('invoice.tax-tab')); } /** * Returns different tax breakdown elements. * * @return array Different tax breakdown elements */ protected function getTaxBreakdown() { $breakdowns = array( 'product_tax' => $this->order_invoice->getProductTaxesBreakdown($this->order), 'shipping_tax' => $this->order_invoice->getShippingTaxesBreakdown($this->order), 'ecotax_tax' => $this->order_invoice->getEcoTaxTaxesBreakdown(), 'wrapping_tax' => $this->order_invoice->getWrappingTaxesBreakdown(), ); foreach ($breakdowns as $type => $bd) { if (empty($bd)) { unset($breakdowns[$type]); } } if (empty($breakdowns)) { $breakdowns = false; } if (isset($breakdowns['product_tax'])) { foreach ($breakdowns['product_tax'] as &$bd) { $bd['total_tax_excl'] = $bd['total_price_tax_excl']; } } if (isset($breakdowns['ecotax_tax'])) { foreach ($breakdowns['ecotax_tax'] as &$bd) { $bd['total_tax_excl'] = $bd['ecotax_tax_excl']; $bd['total_amount'] = $bd['ecotax_tax_incl'] - $bd['ecotax_tax_excl']; } } return $breakdowns; } /* protected function getTaxLabel($tax_breakdowns) { $tax_label = ''; $all_taxes = array(); foreach ($tax_breakdowns as $type => $bd) foreach ($bd as $line) if(isset($line['id_tax'])) $all_taxes[] = $line['id_tax']; $taxes = array_unique($all_taxes); foreach ($taxes as $id_tax) { $tax = new Tax($id_tax); $tax_label .= $tax->id.': '.$tax->name[$this->order->id_lang].' ('.$tax->rate.'%) '; } return $tax_label; } */ /** * Returns the invoice template associated to the country iso_code. * * @param string $iso_country */ protected function getTemplateByCountry($iso_country) { $file = Configuration::get('PS_INVOICE_MODEL'); // try to fetch the iso template $template = $this->getTemplate($file . '.' . $iso_country); // else use the default one if (!$template) { $template = $this->getTemplate($file); } return $template; } /** * Returns the template filename when using bulk rendering. * * @return string filename */ public function getBulkFilename() { return 'invoices.pdf'; } /** * Returns the template filename. * * @return string filename */ public function getFilename() { $id_lang = Context::getContext()->language->id; $id_shop = (int) $this->order->id_shop; $format = '%1$s%2$06d'; if (Configuration::get('PS_INVOICE_USE_YEAR')) { $format = Configuration::get('PS_INVOICE_YEAR_POS') ? '%1$s%3$s-%2$06d' : '%1$s%2$06d-%3$s'; } return sprintf( $format, Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, $id_shop), $this->order_invoice->number, date('Y', strtotime($this->order_invoice->date_add)) ) . '.pdf'; } } invoice.addresses-tab.tpl {** * 2007-2018 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 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: * https://opensource.org/licenses/OSL-3.0 * 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 <contact@prestashop.com> * @copyright 2007-2018 PrestaShop SA * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA *} <table id="addresses-tab" cellspacing="0" cellpadding="0"> <tr> <td width="50%">{if $delivery_address}<span class="bold">{l s='Delivery Address' d='Shop.Pdf' pdf='true'}</span><br/><br/> {l s='Name Surname' d='Shop.Pdf' pdf='true'}: {$firstname_deli} {$lastname_deli}<br /> {if $company_deli}{l s='Company' d='Shop.Pdf' pdf='true'}: {$company_deli}<br />{/if} {l s='Address' d='Shop.Pdf' pdf='true'}: {$address1_deli}<br /> {if $address2_deli}{l s='Address' d='Shop.Pdf' pdf='true'}: {$address2_deli}<br />{/if} {l s='ZIP Code' d='Shop.Pdf' pdf='true'}: {$postcode_deli}<br /> {l s='City' d='Shop.Pdf' pdf='true'}: {$city_deli}<br /> {if $state_name_deli}{l s='State' d='Shop.Pdf' pdf='true'}: {$state_name_deli}<br />{/if} {l s='Country' d='Shop.Pdf' pdf='true'}: {$country_name_deli}<br /> {if $phone_deli}{l s='Phone' d='Shop.Pdf' pdf='true'}: {$phone_deli}<br />{/if} {if $phone_mobile_deli}{l s='Mobile' d='Shop.Pdf' pdf='true'}: {$phone_mobile_deli}<br />{/if} {/if} </td> <td width="50%"><span class="bold">{l s='Billing Address' d='Shop.Pdf' pdf='true'}</span><br/><br/> {l s='Name Surname' d='Shop.Pdf' pdf='true'}: {$firstname_invo} {$lastname_invo}<br /> {if $company_invo}{l s='Company' d='Shop.Pdf' pdf='true'}: {$company_invo}<br />{/if} {l s='Address' d='Shop.Pdf' pdf='true'}: {$address1_invo}<br /> {if $address2_invo}{l s='Address' d='Shop.Pdf' pdf='true'}: {$address2_invo}<br />{/if} {l s='ZIP Code' d='Shop.Pdf' pdf='true'}: {$postcode_invo}<br /> {l s='City' d='Shop.Pdf' pdf='true'}: {$city_invo}<br /> {if $state_name_invo}{l s='State' d='Shop.Pdf' pdf='true'}: {$state_name_invo}<br />{/if} {l s='Country' d='Shop.Pdf' pdf='true'}: {$country_name_invo}<br /> {if $phone_invo}{l s='Phone' d='Shop.Pdf' pdf='true'}: {$phone_invo}<br />{/if} {if $phone_mobile_invo}{l s='Mobile' d='Shop.Pdf' pdf='true'}: {$phone_mobile_invo}<br />{/if} {if $vat_number_invo}{l s='VAT' d='Shop.Pdf' pdf='true'}: {$vat_number_invo}<br />{/if} {if $dni_invo}{l s='DNI' d='Shop.Pdf' pdf='true'}: {$dni_invo}<br />{/if} </td> </tr> </table> Link to comment Share on other sites More sharing options...
fedesib Posted June 25, 2019 Share Posted June 25, 2019 Ciao, nel template invoice.addresses-tab.tpl ci dovrebbe già essere la dicitura DNI 57 minutes ago, danyw3b said: {if $dni_invo}{l s='DNI' d='Shop.Pdf' pdf='true'}: {$dni_invo}<br />{/if} quindi forse ti basta modificare/aggiungere la traduzione in italiano di DNI, senza modificare nulla. In alternativa la stringa da modificare è proprio 1 hour ago, danyw3b said: {l s='DNI' d='Shop.Pdf' pdf='true'} Buona giornata, Federica 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now