home|blog|MAGENTO 1.4 – AGGIUNGERE IL CODICE FISCALE

Magento 1.4 – Aggiungere il codice fiscale

Dalla versione 1.4 in Magento è finalmente stato aggiunto il campo relativo alla partita iva per i clienti.
In attesa che venga aggiunta la possiblità di gestire campi custom internamente vi mostriamo come aggiungere il campo per il codice fiscale.
(si è preso spunto da http://www.fontis.com.au/blog/magento/know-more-about-your-customers-adding-custom-signup-attributes)

Per prima cosa bisogna creare nella cartella app\etc\modules il file ‘innove_cf.xml’ (sarà il nome del nostro modulo) :

<config>
 <modules>
  <innove_cf>
   <active>true</active>
   <codePool>local</codePool>
  </innove_cf>
 </modules>
</config>

Prendiamo dal il file ‘app\code\core\Mage\Customer\etc\config.xml’ e copiamolo, dopo averla creata, nella cartella ‘app\code\local\innove\cf\etc’. Apriamolo con un editor e cerchiamo:

<modules>
 <Mage_Customer>
  <version>x.x.x</version>
 </Mage_Customer>
</modules>

Modifichiamolo in :

<modules>
 <innove_cf>
  <version>1.0.0</version>
 </innove_cf>
</modules>

Sempre nel file cerchiamo il tag ‘<global>’, all’interno troveremo il tag ‘<fieldsets>’, prima della chiusura del tag ‘<customer_account>’ aggiungiamo:

<cf><create>1</create><update>1</update></cf>

Creiamo ora la cartella ‘app\code\local\innove\cf\Model\Entity’ e aggiungiamo il file ‘Setup.php’ copiandolo da ‘app\code\core\Mage\Customer\Model\Entity\Setup.php’.
Cambiamo il nome della classe in ‘class Innove_Cf_Model_Entity_Setup extends Mage_Customer_Model_Entity_Setup’, togliamo tutto il contenuto lasciando solo la funzione ‘public function getDefaultEntities()’, all’interno dell’array ‘customer’ aggiungiamo il nostro nuovo campo:

'cf' => array(
 'label'        => 'Codice Fiscale',
 'visible'    => true,
 'required'    => true,
 ),

Ora dobbiamo fare in modo che magento crei il nuovo attributo in db, il metodo più facile è aggiungere questo codice:

<?
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttribute('customer', 'cf', array(
 'label'        => 'Codice Fiscale',
 'type'        => 'varchar',
 'input'        => 'text',
 'visible'    => true,
 'required'    => true,
 'position'    => 1,
 ));
?>

in un template, ad esempio ‘miotema\template\customer\form\register.phtml’ e visitare la pagina di registrazione.
Una volta che l’attributo è stato aggiunto il codice si può eliminare.

L’ultima operazione da fare è modificare i template per permettere l’inserimento e al modifica del codice fiscale da parte degli utenti, i template da modificare sono:

  • miotema\template\customer\form\register.phtml
  • miotema\template\customer\form\edit.phtml

Nel file register.phtml cerchiamo

<?php if ($_gender->isEnabled()): ?>
 <li><?php echo $_gender->setGender($this->getFormData()->getGender())->toHtml() ?></li>
<?php endif ?>

E aggiungiamo:

<li>
 <label for="cf"><em>*</em><?php echo $this->__('Codice Fiscale') ?></label>
 <div>
  <input type="text" name="cf" id="cf" value="<?php echo $this->htmlEscape($this->getFormData()->getCf()) ?>" title="<?php echo $this->__('Cf') ?>" />
 </div>
</li>

Nel file edit.phtml cerchiamo

<?php if ($_gender->isEnabled()): ?>
<li><?php echo $_gender->setGender($this->getCustomer()->getGender())->toHtml() ?></li>
<?php endif ?>

E aggiungiamo:

<li>
 <label for="cf"><em>*</em><?php echo $this->__('Codice Fiscale') ?></label>
 <div>
  <input type="text" name="cf" id="cf" value="<?php echo $this->htmlEscape($this->getCustomer()->getCf()) ?>" title="<?php echo $this->__('Cf') ?>" />
 </div>
</li>

Ora non resta da testare che tutto funzioni a dovere.

share:

20 thoughts on “Magento 1.4 – Aggiungere il codice fiscale

  1. Ho provato ad apportare le modifiche indicate, ma non cambia nulla, il campo non appare ne nel form di registrazione ne tantomeno nell’amministrazione.
    Cosa ho sbagliato?

    Grazie

  2. Ciao, ho creato il campo, è visibile sia in backend che frontend però sul frontend non funziona, ho provato a registrare un nuovo utente e il cf inserito non viene memorizzato, stessa cosa in fase di editing, mentre sul backend funziona correttamente.

  3. Se nel backend vedi il campo l’unica cosa che mi viene in mente è che hai sbagliato qualcosa nei template..la versione di magento è la 1.4?

  4. Anche a me non funziona correttamente…
    Frontend: compare il campo, inserisco il CF ma non lo memorizza.
    Backend: inserisco il codice fiscale sulla scheda cliente e lo mantiene in memoria.

    A parte i problemi ti faccio i miei complimenti per il sito.

  5. Sei appena diventato il mio eroe personale!
    Funziona tutto, l’unica accortezza è di aggiornare la cache alla fine delle modifiche!

    Grazie per il post!

  6. Ciao e grazie intanto per il post!

    anche io ho lo stesso problema che hanno altri, da backend tutto ok mentre lato frontend non mi salva i dati… qualcuno è riuscito a risolvere?
    ps: sto usando magento 1.4.1.1

    ciao!
    Luca

  7. ciao ti volevo chiedere alcune cose sulla guida.
    Ho seguito tutto alla lettera. Riesco ad avere i campi per il codice fiscale nella pagina di registrazione e nella pagina dell’utente quando questo si autentica. Solo che le informazioni non vengono memorizzate. In più non riesco a trovare il codice fiscale nella parte amministrazione quando vado sulle informazioni del cliente. Credo che il problema principale di memorizzazione sia nell’aggiunta dell’attributo nel database. Potresti spiegare come fare a creare l’attributo diversamente da come hai fatto nella guida.
    Ultima domanda quale file devo modificare per vedere il campo codice fiscale nella parte ammistratore?

    Grazie mille per la guida è davvero un punto per iniziare a risolvere questo problema del codice fiscale.

  8. Ciao,
    io sto lavorando con l’ultima versione, la 1.5.0.1.
    Ho apportato le modifiche sopra riportate e ho i seguenti problemi:
    – frontend vedo il campo codice fiscale, ma non memorizza alcun dato;
    – nel backend non vedo nemmeno il campo.
    Ho inoltre apportato una modifica nei template per riportare il campo TAX/VAT Number, che viene riportato correttamente (valore memorizzato nella backend) però non riesco a memorizzare i nuovi valori.
    Non riesco proprio a capire dove mettere mano per far funzionare il tutto.
    Grazie in anticipo per l’aiuto.

  9. Altra domanda:
    quando si crea il file setup.php la funzione Getdefaultentities va riportata per intero con tutto l’array e poi aggiungendo il campo cf oppure va cancellato anche l’array e si lascia solo il campo cf?
    Grazie.

  10. Ciao Sergio, con l’ultima versione non ho provato quindi non ti so dire, se riesco a fare un test aggiorno il post.

  11. È cambiato tutto dalla 1.4.2!
    È stata aggiunta una tabella “customer_form_attribute” che filtra i dati dei form. Se non si vanno a dichiarare in quella tabella i campi aggiuntivi, il dato non viene salvato.

    Appena ho un attimo scrivo una procedura aggiornata per l’aggiunta del codice fiscale.

  12. In trepida attesa della procedura aggiornata… un dubbio… bisogna anche aggiungere il flag pr la privacy, non ci ha pensato nessuno?
    Si farà immagino nel modo analogo al C.F….

    Grazie in anticioo per la risposta!

    Paolo

  13. Mi permetto, nell’attesa che Marco completi l’ottimo lavoro, di indicare una procedura che completa l’opera per la versione 1.5.

    1) Seguire step-step il tutorial, per i passaggi gia scritti da Marco non cambia nulla tra magento 1.4 e 1.5

    2) Terminata la procedura, aprire almeno 1 volta la pagina di registrazione, in questo modo viene lanciato quel piccolo script di setup Mage_Eav_Model_Entity_Setup

    3) Accedere al database via phpMyadmin e cercare la tabella
    [eventuale prefisso]eav_attribute
    cercate l’ultimo record inserito, quello con “cf” nel campo attribute code, e segnatevi il relativo id (nel mio caso ad esempio è 121)

    4) Eseguite queste query:
    INSERT INTO customer_form_attribute (form_code, attribute_id) values (“adminhtml_checkout”, ID);
    INSERT INTO customer_form_attribute (form_code, attribute_id) values (“adminhtml_customer”, ID);
    INSERT INTO customer_form_attribute (form_code, attribute_id) values (“checkout_register”, ID);
    INSERT INTO customer_form_attribute (form_code, attribute_id) values (“customer_account_create”, ID);
    INSERT INTO customer_form_attribute (form_code, attribute_id) values (“customer_account_edit”, ID);

    dove al posto di ID andrà quel numero che vi siete appena appuntati.

    Ovviamente anche qui attenzione se avete un prefisso prima delle tabelle.

  14. Niente da fare! Ho provato e riprovato ma creare un pacchetto pronto è troppo complicato? Grazie comunque delle dritte.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*