Adicionando um atributo(campos) ao cadastro de clientes e checkout do magento

Versão do magento utilizada: 1.7.0.2

Neste post vou demonstrar como construir um pequeno módulo para inserir um novo atributo ao cadastro de clientes do magento.

Neste exemplo será criado um atributo chamado ‘tipopessoa’, com as opções física, jurídica e outra.

A estrutura do módulo deve ficar assim:

atributos-cadastro-clientes-01

Explicando passo a passo:

Arquivo Data.php

Esse arquivo conteḿ apenas a declaração da classe do nosso módulo.

Isso é uma exigencia do sistema para criação de módulos.

Ele contém o seguinte conteúdo:

class Alexbraga_Novoatributo_Helper_Data extends Mage_Core_Helper_Abstract
{

}

Arquivo Tipopessoa.php

Aqui encontram-se as opções que estarão disponíves em nosso catributo(campo).

Conteúdo:

class Alexbraga_Novoatributo_Model_Entity_Tipopessoa extends Mage_Eav_Model_Entity_Attribute_Source_Abstract
{
 public function getAllOptions()
 {
 if ($this->_options === null) {
 $this->_options = array();
 $this->_options[] = array(
 'value' => '',
 'label' => 'Escolha a opco..'
 );
 $this->_options[] = array(
 'value' => 1,
 'label' => 'Fisica'
 );
 $this->_options[] = array(
 'value' => 2,
 'label' => 'Juridica'
 );
 $this->_options[] = array(
 'value' => 3,
 'label' => 'Outro'
 );

}

return $this->_options;
 }
}

Arquivo Config.xml

É o arquivo mais importante do módulo.

Aqui colocamos todos os dados necessários para que nosso funcione corretamente.

Seu conteúdo:

<?xml version="1.0"?>
<config>
 <modules>
 <Alexbraga_Novoatributo> <!-- Caminho do módulo -->
<version>0.1.1</version> <!-- Versão do módulo -->
 </Alexbraga_Novoatributo>
 </modules>
 <frontend>
 <layout>
 <updates>
 <novoatributo>
 <file>novoatributo.xml</file> <!-- Arquivo com os caminhos dos novos arquivos do template. Esses arquivos terão nosso novo campo -->
 </novoatributo>
 </updates>
 </layout>
 </frontend>
 <global>
 <fieldsets>
 <checkout_onepage_quote>
 <customer_tipopessoa>
 <to_customer>tipopessoa</to_customer> <!-- nome do nosso novo atributo -->
 </customer_tipopessoa>
 </checkout_onepage_quote>
 <customer_account>
 <tipopessoa>
 <to_quote>customer_tipopessoa</to_quote> <!-- tabela onde será armazenado nosso novo atributo antes de ser gravado no pedido -->
 </tipopessoa>
 </customer_account>
 </fieldsets>
 </global>
 <global>
 <fieldsets>
 <customer_account>
 <tipopessoa><create>1</create><update>1</update><name>1</name></tipopessoa> <!-- Diz ao magento que ele deve exibir nosso novo atributo no admin na edição do cliente. -->
 </customer_account>
 </fieldsets>
 </global>
 <global>
 <models>
 <novoatributo>
 <class>Alexbraga_Novoatributo_Model</class> <!-- Pasta model do nosso módulo -->
 </novoatributo>
 </models>
 <resources>
 <novoatributo_setup>
 <setup>
 <module>Alexbraga_Novoatributo</module>
 <class>Mage_Customer_Model_Entity_Setup</class>
 </setup>
 <connection>
 <use>core_setup</use>
 </connection>
 </novoatributo_setup>
 <novoatributo_write>
 <connection>
 <use>core_write</use>
 </connection>
 </novoatributo_write>
 <novoatributo_read>
 <connection>
 <use>core_read</use>
 </connection>
 </novoatributo_read>
 </resources>

<helpers>
 <novoatributo>
 <class>Alexbraga_Novoatributo_Helper</class>
 </novoatributo>
 </helpers>
 </global>
</config>

Arquivo mysql4-install-0.1.1

Nesse arquivo criamos de fato nosso novo atributo.

Conteúdo:

<?php

$installer = $this;

$installer->startSetup();

$setup = Mage::getModel('customer/entity_setup', 'core_setup');
$setup->addAttribute('customer', 'tipopessoa', array(
 'type' => 'int',
 'input' => 'select',
 'label' => 'Tipo Pessoa',
 'global' => 1,
 'visible' => 1,
 'required' => 0,
 'user_defined' => 1,
 'default' => '0',
 'visible_on_front' => 1,
 'source' => 'novoatributo/entity_tipopessoa',
));

&nbsp;

if (version_compare(Mage::getVersion(), '1.4.2', '>='))
{
 Mage::getSingleton('eav/config')
 ->getAttribute('customer', 'tipopessoa')
 ->setData('used_in_forms', array('adminhtml_customer','customer_account_create','customer_account_edit','checkout_register'))
 ->save();

}

$tablequote = $this->getTable('sales/quote');
$installer->run("
ALTER TABLE $tablequote ADD `customer_tipopessoa` INT NOT NULL
");

&nbsp;

$installer->endSetup();

Os demais arquivos são apenas templates baseados em suas versões originais, porém com o campo adicional criado para o nosso novo atributo.

Módulo funcionando:

atributos-cadastro-clientes-02

atributos-cadastro-clientes-03

atributos-cadastro-clientes-04

2017-01-24T20:25:10+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x