Magento 1.4 - Aggiungere il codice fiscale

2 min read
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) :
[xml]
<config>
<modules>
<innove_cf>
<active>true</active>
<codePool>local</codePool>
</innove_cf>
</modules>
</config>
[/xml]
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:
[xml]
<modules>
<Mage_Customer>
<version>x.x.x</version>
</Mage_Customer>
</modules>
[/xml]
Modifichiamolo in :
[xml]
<modules>
<innove_cf>
<version>1.0.0</version>
</innove_cf>
</modules>
[/xml]
Sempre nel file cerchiamo il tag '<global>', all'interno troveremo il tag '<fieldsets>', prima della chiusura del tag '<customer_account>' aggiungiamo:
[xml]<cf><create>1</create><update>1</update></cf>[/xml]
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:
[php]
'cf' => array(
'label'        => 'Codice Fiscale',
'visible'    => true,
'required'    => true,
),
[/php]
Ora dobbiamo fare in modo che magento crei il nuovo attributo in db, il metodo più facile è aggiungere questo codice:
[php]
<?
$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,
));
?>
[/php]
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]
<?php if ($_gender->isEnabled()): ?>
<li><?php echo $_gender->setGender($this->getFormData()->getGender())->toHtml() ?></li>
<?php endif ?>
[/php]
E aggiungiamo:
[php]
<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>
[/php]
Nel file edit.phtml cerchiamo

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

E aggiungiamo:
[php]
<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>
[/php]


Ora non resta da testare che tutto funzioni a dovere.