Jump to content

[HOW TO] Migliorare le fatture e debug visualizzazione IVA


Recommended Posts

Ciao!

Ho finito, almeno spero, il capitolo fatture e lo condivido volentieri.

La fattura di default di PS è alquanto bruttina, oltre che con qualche bug, così come sono buggate quasi tutte le funzioni nel carrello, nello shop e nel checkout per evidenziare "IVA inclusa" / "IVA esclusa".

Non sono indispensabili, ma almeno a me fa una pessima impressione ricevere una fattura dove il prezzo rimane il medesimo ma l'etichetta segna con e senza IVA, dove la formattazione è pessima, ecc.

Anche se virtuale, è pur sempre un negozio, e non è bello entrare in un negozio sporco o disordinato.

 

Quindi mi sono rimboccato le maniche e tra segnalazioni e/o risoluzioni di bug e un bel po' di lavoro, ecco un lungo post che spero sia utile a qualcuno. Non è detto che sia esente da bug, io ho fatto molte prove e lo uso nel mio shop, in caso... segnalate!

 

Per Prestashop 1.5

 

Per prima cosa delle immagini, le fatture appariranno così:

con IVA

si iva.pdf

senza IVA

no iva.pdf

 

Poi i template: li trovate nello zip allegato con la ricostruzione del percorso dove vanno messi (ho inserito anche la traduzione in italiano e inglese per chi, come me, vuole sostituire IVA con VAT).

Per sicurezza, rinominare i file esistenti che andranno sostituiti per tenerli come backup.

Poi alcune modifiche:

- aprire /classes/pdf/PDFGenerator.php

- cercare:

$this->setMargins(10, 40, 10);

modificarlo in:

$this->setMargins(10, 5, 10);

- aprire /classes/pdf/HTMLTemplateInvoice.php

- cercare:

$this->title = HTMLTemplateInvoice::l('Invoice ').' #'.Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, (int)$this->order->id_shop).sprintf('%06d', $order_invoice->number);

cambiare in:

$this->title = Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, (int)$this->order->id_shop).sprintf('%06d', $order_invoice->number);

Ora debug per una corretta visualizzazione dell'IVA (tasse) nel carrello.

- aprire il file /classes/Product.php

- cercare:

self::$_taxCalculationMethod = Group::getPriceDisplayMethod((int)$customer->id_default_group);

- aggiungere dopo:

 $cur_cart = Context::getContext()->cart;
      $id_address = 0;
      if (Validate::isLoadedObject($cur_cart))
        $id_address = $cur_cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')};
      $address_infos = Address::getCountryAndState($id_address);

      if (self::$_taxCalculationMethod != PS_TAX_EXC
        && !empty($address_infos['vat_number'])
        && $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY')
        && Configuration::get('VATNUMBER_MANAGEMENT'))
        self::$_taxCalculationMethod = PS_TAX_EXC;

- aprire classes/controller/FrontController.php

- cercare:

CartRule::autoAddToCart($this->context);
 }

- aggiungere dopo:

 else
      $this->context->cart = $cart;

- cercare:

'priceDisplay' => Product::getTaxCalculationMethod(),

- sostituire con:

'priceDisplay' => Product::getTaxCalculationMethod((int)$this->context->cookie->id_customer),

Ora per visualizzare correttamente IVA incl/excl nello step della scelta corrieri.

- aprire  /themes/default/order-carrier.tpl

- cercare:

{if $use_taxes == 1}
{convertPrice price=$option.total_price_with_tax} {l s='(tax incl.)'}
{else}
{convertPrice price=$option.total_price_without_tax} {l s='(tax excl.)'}
{/if}

- sostituirlo con:

{if $priceDisplay == 1}
{convertPrice price=$option.total_price_without_tax} {l s='(tax excl.)'}
{else}
{convertPrice price=$option.total_price_with_tax} {l s='(tax incl.)'} {/if}

Poi c'è anche una piccola modifica per visualizzare o meno l'etichetta IVA nella pagina prodotto, ma se ne è già parlato nel forum.

 

Mi sembra ci sia tutto, per qualsiasi cosa... siamo qui!  :)

invoice_mod.zip

Edited by viger (see edit history)
  • Like 4
Link to comment
Share on other sites

:)

Bene, sono contento serva anche a qualcun altro!

Per CF/P.IVA lo puoi far inserire nell'indirizzo, ma non formattarlo (che so, tipo C.F.: sjhsahhsgkjhdg), o meglio, si può senz'altro fare ma io non so come...  :D

Per inserirlo vai su Localizzazione==>Nazioni, clicca su Italia e nel campo "Layout indirizzo" inserisci:

company
vat_number
dni

Questo ti farà apparire nome ditta/P.IVA e CF, ma li dovrai riconoscere a occhio, non sono preceduti da una qualche etichetta. Devi inserirli per ogni nazione in cui ti servono. Il CF solo per l'Italia, ma la P.IVA per tutta la UE se vendi anche a ditte in esenzione d'IVA.

Link to comment
Share on other sites

  • 2 weeks 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...