├── Block ├── Create.php ├── Customer.php ├── Order.php └── Url.php ├── Controller ├── Adminhtml │ └── Search │ │ └── Index.php └── Search │ └── Index.php ├── Helper └── Api.php ├── README.md ├── catalog-info.yaml ├── composer.json ├── etc ├── adminhtml │ ├── routes.xml │ └── system.xml ├── config.xml ├── frontend │ └── routes.xml └── module.xml ├── manual-de-configuracoes.md ├── registration.php └── view ├── adminhtml ├── layout │ ├── customer_index_edit.xml │ └── sales_order_create_index.xml ├── templates │ ├── order.phtml │ └── url.phtml └── ui_component │ └── customer_form.xml ├── base └── web │ └── js │ └── form │ └── element │ └── post-code.js └── frontend ├── layout ├── checkout_index_index.xml ├── customer_account_create.xml └── customer_address_form.xml └── templates ├── create.phtml ├── customer.phtml ├── order.phtml └── url.phtml /Block/Create.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | namespace Intelipost\Autocomplete\Block; 9 | 10 | class Create extends \Magento\Framework\View\Element\Template 11 | { 12 | 13 | protected $_scopeConfig; 14 | 15 | public function __construct( 16 | \Magento\Framework\View\Element\Template\Context $context, 17 | \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig 18 | ) 19 | { 20 | $this->setTemplate('create.phtml'); 21 | 22 | parent::__construct($context); 23 | $this->_scopeConfig = $scopeConfig; 24 | } 25 | 26 | public function getLoadPageTime() 27 | { 28 | return $this->_scopeConfig->getValue('intelipost_autocomplete/settings/load_page_time'); 29 | } 30 | 31 | public function getCustomState() 32 | { 33 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer_create/create_custom_state'); 34 | } 35 | 36 | public function getCustomCity() 37 | { 38 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer_create/create_custom_city'); 39 | } 40 | 41 | public function getCustomStreet() 42 | { 43 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer_create/create_custom_street'); 44 | } 45 | 46 | public function getCustomQuarter() 47 | { 48 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer_create/create_custom_quarter'); 49 | } 50 | 51 | public function getCustomAdditionalInfo() 52 | { 53 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer_create/create_custom_additional_info'); 54 | } 55 | 56 | } -------------------------------------------------------------------------------- /Block/Customer.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | namespace Intelipost\Autocomplete\Block; 9 | 10 | class Customer extends \Magento\Framework\View\Element\Template 11 | { 12 | 13 | protected $_scopeConfig; 14 | 15 | public function __construct( 16 | \Magento\Framework\View\Element\Template\Context $context, 17 | \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig 18 | ) 19 | { 20 | $this->setTemplate('customer.phtml'); 21 | 22 | parent::__construct($context); 23 | $this->_scopeConfig = $scopeConfig; 24 | } 25 | 26 | public function getLoadPageTime() 27 | { 28 | return $this->_scopeConfig->getValue('intelipost_autocomplete/settings/load_page_time'); 29 | } 30 | 31 | public function getCustomState() 32 | { 33 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer/custom_state'); 34 | } 35 | 36 | public function getCustomCity() 37 | { 38 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer/custom_city'); 39 | } 40 | 41 | public function getCustomStreet() 42 | { 43 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer/custom_street'); 44 | } 45 | 46 | public function getCustomQuarter() 47 | { 48 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer/custom_quarter'); 49 | } 50 | 51 | public function getCustomAdditionalInfo() 52 | { 53 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_customer/custom_additional_info'); 54 | } 55 | 56 | } -------------------------------------------------------------------------------- /Block/Order.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | namespace Intelipost\Autocomplete\Block; 9 | 10 | class Order extends \Magento\Framework\View\Element\Template 11 | { 12 | 13 | protected $_scopeConfig; 14 | 15 | public function __construct( 16 | \Magento\Framework\View\Element\Template\Context $context, 17 | \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig 18 | ) 19 | { 20 | $this->setTemplate('order.phtml'); 21 | 22 | parent::__construct($context); 23 | $this->_scopeConfig = $scopeConfig; 24 | } 25 | 26 | public function getLoadPageTime() 27 | { 28 | $time = $this->_scopeConfig->getValue('intelipost_autocomplete/settings/load_page_time'); 29 | return $time; 30 | } 31 | 32 | public function getCustomState() 33 | { 34 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_checkout/checkout_custom_state'); 35 | } 36 | 37 | public function getCustomCity() 38 | { 39 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_checkout/checkout_custom_city'); 40 | } 41 | 42 | public function getCustomStreet() 43 | { 44 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_checkout/checkout_custom_street'); 45 | } 46 | 47 | public function getCustomQuarter() 48 | { 49 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_checkout/checkout_custom_quarter'); 50 | } 51 | 52 | public function getCustomAdditionalInfo() 53 | { 54 | return $this->_scopeConfig->getValue('intelipost_autocomplete/custom_fields_checkout/checkout_custom_additional_info'); 55 | } 56 | 57 | } 58 | 59 | -------------------------------------------------------------------------------- /Block/Url.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | namespace Intelipost\Autocomplete\Block; 9 | 10 | class Url extends \Magento\Framework\View\Element\Template 11 | { 12 | 13 | public function __construct( 14 | \Magento\Framework\View\Element\Template\Context $context 15 | ) 16 | { 17 | $this->setTemplate('url.phtml'); 18 | 19 | parent::__construct($context); 20 | } 21 | 22 | public function getAjaxUrl() 23 | { 24 | return $this->getUrl('intelipost_autocomplete/search/index'); 25 | } 26 | 27 | } 28 | 29 | 30 | -------------------------------------------------------------------------------- /Controller/Adminhtml/Search/Index.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | namespace Intelipost\Autocomplete\Controller\Adminhtml\Search; 9 | 10 | class Index extends \Magento\Framework\App\Action\Action 11 | { 12 | 13 | protected $_autocompleteHelper; 14 | 15 | public function __construct( 16 | \Magento\Framework\App\Action\Context $context, 17 | \Intelipost\Autocomplete\Helper\Api $autocompleteHelper 18 | ) 19 | { 20 | $this->_autocompleteHelper = $autocompleteHelper; 21 | 22 | parent::__construct ($context); 23 | } 24 | 25 | public function execute() 26 | { 27 | $postcode = $this->getRequest()->getParam('postcode'); 28 | $postcode = preg_replace ('#[^0-9]#', "", $postcode); 29 | if (empty ($postcode) || strlen ($postcode) != 8) return; 30 | 31 | $result = $this->_autocompleteHelper->getCEPLocationAddressComplete ($postcode); 32 | if (!$result || !is_array ($result)) return; 33 | 34 | if (array_key_exists ('content', $result)) 35 | { 36 | $this->getResponse()->setBody(json_encode ($result ['content'])); 37 | } 38 | } 39 | 40 | } 41 | 42 | -------------------------------------------------------------------------------- /Controller/Search/Index.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | namespace Intelipost\Autocomplete\Controller\Search; 9 | 10 | class Index extends \Intelipost\Autocomplete\Controller\Adminhtml\Search\Index 11 | { 12 | 13 | protected $_autocompleteHelper; 14 | 15 | public function __construct( 16 | \Magento\Framework\App\Action\Context $context, 17 | \Intelipost\Autocomplete\Helper\Api $autocompleteHelper 18 | ) 19 | { 20 | $this->_autocompleteHelper = $autocompleteHelper; 21 | 22 | parent::__construct ($context, $autocompleteHelper); 23 | } 24 | 25 | } 26 | 27 | -------------------------------------------------------------------------------- /Helper/Api.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | namespace Intelipost\Autocomplete\Helper; 9 | 10 | class Api extends \Intelipost\Basic\Helper\Api 11 | { 12 | 13 | const AUTOCOMPLETE_CEP_LOCATION_ADDRESS_COMPLETE = 'cep_location/address_complete/'; 14 | 15 | protected $_scopeConfig; 16 | 17 | public function __construct 18 | ( 19 | \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig 20 | ) 21 | { 22 | $this->_scopeConfig = $scopeConfig; 23 | 24 | parent::__construct($scopeConfig); 25 | } 26 | 27 | public function getCEPLocationAddressComplete ($destPostcode) 28 | { 29 | $response = $this->apiRequest (self::GET, self::AUTOCOMPLETE_CEP_LOCATION_ADDRESS_COMPLETE . "{$destPostcode}"); 30 | 31 | $result = json_decode ($response, true); 32 | 33 | return $result; 34 | } 35 | 36 | } 37 | 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Manual de Uso: Módulo Autocomplete Intelipost 2 | 3 | [![logo](https://image.prntscr.com/image/E8AfiBL7RQKKVychm7Aubw.png)](http://www.intelipost.com.br) 4 | 5 | ## Introdução 6 | 7 | O módulo Autocomplete Intelipost é responsável por completar os dados de endereço partindo do CEP fornecido pelo cliente final. 8 | A consulta do CEP é feita na [API Intelipost](https://docs.intelipost.com.br/v1/cep/autocomplete). 9 | 10 | Com a instalação do módulo, essa funcionalidade estará disponível em 3 páginas: 11 | 12 | - Checkout (.../checkout/index/index), 13 | - Página de criação de cadastro de cliente (.../customer/account/create), 14 | - Página de atualização/criação de novo endereço (.../customer/address/form). 15 | 16 | Este manual foi divido em três partes: 17 | 18 | - [Instalação](#instalação): Onde você econtrará instruções para instalar nosso módulo. 19 | - [Configurações](#configurações): Onde você encontrará o caminho para realizar as configurações e explicações de cada uma delas. 20 | - [Uso](#uso): Onde você encontrará a maneira de utilização de cada uma das funcionalidades. 21 | 22 | ## Instalação 23 | > É recomendado que você tenha um ambiente de testes para validar alterações e atualizações antes de atualizar sua loja em produção. 24 | 25 | > A instalação do módulo é feita utilizando o Composer. Para baixar e instalar o Composer no seu ambiente acesse https://getcomposer.org/download/ e caso tenha dúvidas de como utilizá-lo consulte a [documentação oficial do Composer](https://getcomposer.org/doc/). 26 | 27 | Navegue até o diretório raíz da sua instalação do Magento 2 e execute os seguintes comandos: 28 | 29 | 30 | ``` 31 | bin/composer require intelipost/magento2-autocomplete // Faz a requisição do módulo da Intelipost 32 | bin/magento module:enable Intelipost_Autocomplete // Ativa o módulo 33 | bin/magento setup:upgrade // Registra a extensão 34 | bin/magento setup:di:compile // Recompila o projeto Magento 35 | ``` 36 | 37 | ## Configurações 38 | Para acessar o menu de configurações, basta seguir os seguintes passos: 39 | 40 | No menu à esquerda, acessar **Stores** -> **Configuration** -> **Intelipost** -> **Auto Complete**: 41 | 42 | ![ac1](https://s3.amazonaws.com/email-assets.intelipost.net/integracoes/ac2.gif) 43 | 44 | 45 | ### Configurações Básicas 46 | Nesta primeira etapa, a única configuração a ser feita é **Tempo de Carregamento da Página** (Load Page Time) em milisegundos. 47 | Ela indica a quantidade de tempo que deve ser esperado antes de carregar o script de autocomplete na página. 48 | O padrão é de 3000 ms. 49 | 50 | ### Checkout - Customização por "name" dos campos 51 | Nesta seção você deverá configurar os "names" dos campos do front-end que deverão receber cada uma das seguintes informações: 52 | 53 | - State: Estado 54 | - City: Cidade 55 | - Street: Rua 56 | - Quarter: Bairro 57 | - Additional Information: Informações Adicionais 58 | 59 | Caso o cliente não faça uso de alguns desses campos para serem completados, basta deixá-los em branco. 60 | Caracteres especiais podem ser escapados utilizando duas barras invertidas "\\\\". 61 | Por exemplo: Se o campo Bairro for o quarto item do array **street[]**, deve ser configurado da seguinte maneira: street\\\\[3\\\\]. 62 | 63 | ### Editar Endereço do Consumidor - Customização por "id" 64 | As configurações de Criar e Editar Endereço são bem semelhantes ao Checkout. A grande diferença é o parâmetro usado para identificar o campo no front-end. Enquanto no Checkout é o **"name"**, nas páginas de editar o endereço é o **"id"** do campo. 65 | 66 | - State: Estado 67 | - City: Cidade 68 | - Street: Rua 69 | - Quarter: Bairro 70 | - Additional Information: Informações Adicionais 71 | 72 | Caso o cliente não faça uso de alguns desses campos para serem completados, basta deixá-los em branco. 73 | 74 | ### Criar Endereço do Consumidor - Customização por "id" 75 | Assim como nas configurações para editar o endereço, as configurações de criar endereõ também são customizadas a partir do **"id"** do campo no front-end. 76 | 77 | - State: Estado 78 | - City: Cidade 79 | - Street: Rua 80 | - Quarter: Bairro 81 | - Additional Information: Informações Adicionais 82 | 83 | Caso o cliente não faça uso de alguns desses campos para serem completados, basta deixá-los em branco. 84 | 85 | ## Uso 86 | 87 | O uso do módulo é bem simples. Uma vez instalado e configurado, basta ir até a página de checkout (ou de criação/edição de cadastro) e preencher um CEP. Assim que o foco for tirado do campo CEP, os campos serão preenchidos automaticamente no formulário (rua, bairro, cidade, estado e informações adicionais). 88 | 89 | ![ac1](https://s3.amazonaws.com/email-assets.intelipost.net/integracoes/ac3.gif) 90 | -------------------------------------------------------------------------------- /catalog-info.yaml: -------------------------------------------------------------------------------- 1 | 2 | apiVersion: backstage.io/v1alpha1 3 | kind: Component 4 | metadata: 5 | name: magento2-autocomplete 6 | description: some description 7 | annotations: 8 | argocd/app-name: magento2-autocomplete 9 | github.com/project-slug: intelipost/magento2-autocomplete 10 | sonarqube.org/project-key: magento2-autocomplete 11 | spec: 12 | type: service 13 | lifecycle: production 14 | owner: expedicao 15 | childof: 16 | - group:tms-engineering-managers 17 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "intelipost/magento2-autocomplete", 3 | "description": "Intelipost Autocomplete", 4 | "type": "magento2-module", 5 | "version": "1.1.0", 6 | "authors": [ 7 | { 8 | "name": "Intelipost", 9 | "email": "integracoes@intelipost.com.br", 10 | "homepage": "http://www.intelipost.com.br/" 11 | }, 12 | { 13 | "name": "Eneias Ramos de Melo", 14 | "email": "eneias@gamuza.com.br", 15 | "homepage": "http://www.gamuza.com.br/" 16 | } 17 | ], 18 | "license": [ 19 | "OSL-3.0" 20 | ], 21 | "require": { 22 | "php": "~5.5.0|~5.6.0|~7.0.0|~7.1.0", 23 | "intelipost/magento2-basic": "1.*" 24 | }, 25 | "autoload": { 26 | "files": [ 27 | "registration.php" 28 | ], 29 | "psr-4": { 30 | "Intelipost\\Autocomplete\\": "" 31 | } 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /etc/adminhtml/routes.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /etc/adminhtml/system.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | separator-top 17 | 18 | intelipost 19 | Intelipost_Autocomplete::config 20 | 21 | 22 | 23 | 24 | mili seconds 25 | 26 | 27 | 28 | 29 | 30 | 31 | Use two backslashes '\\' to escape special characters. 32 | 33 | 34 | 35 | Use two backslashes '\\' to escape special characters. 36 | 37 | 38 | 39 | Use two backslashes '\\' to escape special characters. 40 | 41 | 42 | 43 | Use two backslashes '\\' to escape special characters. 44 | 45 | 46 | 47 | Use two backslashes '\\' to escape special characters. 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
97 |
98 |
-------------------------------------------------------------------------------- /etc/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /etc/frontend/routes.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /manual-de-configuracoes.md: -------------------------------------------------------------------------------- 1 | # Manual de Uso: Módulo Autocomplete Intelipost 2 | 3 | [![logo](https://image.prntscr.com/image/E8AfiBL7RQKKVychm7Aubw.png)](http://www.intelipost.com.br) 4 | 5 | ## Introdução 6 | 7 | O módulo Autocomplete Intelipost é responsável por completar os dados de endereço partindo do CEP fornecido pelo cliente final. 8 | A consulta do CEP é feita na [API Intelipost](https://docs.intelipost.com.br/v1/cep/autocomplete). 9 | 10 | Com a instalação do módulo, essa funcionalidade estará disponível em 3 páginas: 11 | 12 | - Checkout (.../checkout/index/index), 13 | - Página de criação de cadastro de cliente (.../customer/account/create), 14 | - Página de atualização/criação de novo endereço (.../customer/address/form). 15 | 16 | Este manual foi divido em duas partes: 17 | 18 | - **Configurações**: Onde você encontrará o caminho para realizar as configurações e explicações de cada uma delas. 19 | - **Uso**: Onde você encontrará a maneira de utilização de cada uma das funcionalidades. 20 | 21 | ## Configurações 22 | Para acessar o menu de configurações, basta seguir os seguintes passos: 23 | 24 | No menu à esquerda, acessar **Stores** -> **Configuration** -> **Intelipost** -> **Auto Complete**: 25 | 26 | ![ac1](https://s3.amazonaws.com/email-assets.intelipost.net/integracoes/ac2.gif) 27 | 28 | 29 | ### Configurações Básicas 30 | Nesta primeira etapa, a única configuração a ser feita é **Tempo de Carregamento da Página** (Load Page Time) em milisegundos. 31 | Ela indica a quantidade de tempo que deve ser esperado antes de carregar o script de autocomplete na página. 32 | O padrão é de 3000 ms. 33 | 34 | ### Checkout - Customização por "name" dos campos 35 | Nesta seção você deverá configurar os "names" dos campos do front-end que deverão receber cada uma das seguintes informações: 36 | 37 | - State: Estado 38 | - City: Cidade 39 | - Street: Rua 40 | - Quarter: Bairro 41 | - Additional Information: Informações Adicionais 42 | 43 | Caso o cliente não faça uso de alguns desses campos para serem completados, basta deixá-los em branco. 44 | Caracteres especiais podem ser escapados utilizando duas barras invertidas "\\\\". 45 | Por exemplo: Se o campo Bairro for o quarto item do array **street[]**, deve ser configurado da seguinte maneira: street\\\\[3\\\\]. 46 | 47 | ### Editar Endereço do Consumidor - Customização por "id" 48 | As configurações de Criar e Editar Endereço são bem semelhantes ao Checkout. A grande diferença é o parâmetro usado para identificar o campo no front-end. Enquanto no Checkout é o **"name"**, nas páginas de editar o endereço é o **"id"** do campo. 49 | 50 | - State: Estado 51 | - City: Cidade 52 | - Street: Rua 53 | - Quarter: Bairro 54 | - Additional Information: Informações Adicionais 55 | 56 | Caso o cliente não faça uso de alguns desses campos para serem completados, basta deixá-los em branco. 57 | 58 | ### Criar Endereço do Consumidor - Customização por "id" 59 | Assim como nas configurações para editar o endereço, as configurações de criar endereõ também são customizadas a partir do **"id"** do campo no front-end. 60 | 61 | - State: Estado 62 | - City: Cidade 63 | - Street: Rua 64 | - Quarter: Bairro 65 | - Additional Information: Informações Adicionais 66 | 67 | Caso o cliente não faça uso de alguns desses campos para serem completados, basta deixá-los em branco. 68 | 69 | ## Uso 70 | 71 | O uso do módulo é bem simples. Uma vez instalado e configurado, basta ir até a página de checkout (ou de criação/edição de cadastro) e preencher um CEP. Assim que o foco for tirado do campo CEP, os campos serão preenchidos automaticamente no formulário (rua, bairro, cidade, estado e informações adicionais). 72 | 73 | ![ac1](https://s3.amazonaws.com/email-assets.intelipost.net/integracoes/ac3.gif) -------------------------------------------------------------------------------- /registration.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | \Magento\Framework\Component\ComponentRegistrar::register( 9 | \Magento\Framework\Component\ComponentRegistrar::MODULE, 10 | 'Intelipost_Autocomplete', 11 | __DIR__ 12 | ); 13 | 14 | -------------------------------------------------------------------------------- /view/adminhtml/layout/customer_index_edit.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /view/adminhtml/layout/sales_order_create_index.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /view/adminhtml/templates/order.phtml: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | ?> 8 | 9 | 103 | 104 | -------------------------------------------------------------------------------- /view/adminhtml/templates/url.phtml: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | ?> 8 | 9 | 44 | 45 | -------------------------------------------------------------------------------- /view/adminhtml/ui_component/customer_form.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 |
11 |
12 | 13 | 14 | group 15 | 16 | Magento_Ui/js/form/components/group 17 | Street Address 18 | true 19 | street 20 | 45 21 | 22 | 23 | 24 | 25 | 26 | 0 27 | text 28 | input 29 | address 30 | 31 | true 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 1 40 | text 41 | input 42 | address 43 | 44 | 45 | 46 | 47 | 48 | 49 | 2 50 | text 51 | input 52 | address 53 | 54 | 55 | 56 | 57 | 58 | 59 | 3 60 | text 61 | input 62 | address 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | text 71 | Intelipost_Autocomplete/js/form/element/post-code 72 | input 73 | address 74 | 75 | true 76 | 77 | 44 78 | 79 | 80 | 81 |
82 |
83 | 84 | -------------------------------------------------------------------------------- /view/base/web/js/form/element/post-code.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @package Intelipost_Autocomplete 3 | * @copyright Copyright (c) 2016 Gamuza Technologies (http://www.gamuza.com.br/) 4 | * @author Eneias Ramos de Melo 5 | */ 6 | 7 | define([ 8 | 'underscore', 9 | 'uiRegistry', 10 | 'Magento_Ui/js/form/element/abstract' 11 | ], function (_, registry, Abstract) { 12 | 'use strict'; 13 | 14 | return Abstract.extend({ 15 | defaults: { 16 | imports: { 17 | update: '${ $.parentName }.country_id:value' 18 | } 19 | }, 20 | 21 | /** 22 | * @param {String} value 23 | */ 24 | update: function (value) { 25 | var country = registry.get(this.parentName + '.' + 'country_id'), 26 | options = country.indexedOptions, 27 | option; 28 | 29 | if (!value) { 30 | return; 31 | } 32 | 33 | option = options[value]; 34 | 35 | if (option['is_zipcode_optional']) { 36 | this.error(false); 37 | this.validation = _.omit(this.validation, 'required-entry'); 38 | } else { 39 | this.validation['required-entry'] = true; 40 | } 41 | 42 | this.required(!option['is_zipcode_optional']); 43 | }, 44 | 45 | /** 46 | * Callback that fires when 'value' property is updated. 47 | */ 48 | onUpdate: function () { 49 | this.bubble('update', this.hasChanged()); 50 | 51 | this.validate(); 52 | 53 | var value = this.value(); 54 | 55 | var parentName = this.parentName; 56 | 57 | jQuery.ajax({ 58 | data: {form_key: window.FORM_KEY}, 59 | // type: 'GET', 60 | 61 | url: INTELIPOST_AUTOCOMPLETE_URL + "?postcode=" + value, 62 | showLoader: true, // enable loader 63 | 64 | success: function(data) { 65 | // console.log(data); 66 | 67 | if (!data.length) return; 68 | 69 | var json = JSON.parse (data); 70 | 71 | // Street 72 | var street = registry.get(parentName + '.' + 'street_container.street'); 73 | street.value (json.street); 74 | 75 | var street = registry.get(parentName + '.' + 'street_container.street_fourth'); 76 | street.value (json.neighborhood); 77 | 78 | // City 79 | var city = registry.get(parentName + '.' + 'city'); 80 | city.value (json.city); 81 | 82 | // State 83 | var state = registry.get(parentName + '.' + 'region_id'); 84 | state.value (intelipostAutocompleteUF [json.state_short]); 85 | }, 86 | }); 87 | } 88 | }); 89 | }); 90 | 91 | -------------------------------------------------------------------------------- /view/frontend/layout/checkout_index_index.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /view/frontend/layout/customer_account_create.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /view/frontend/layout/customer_address_form.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /view/frontend/templates/create.phtml: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | ?> 8 | 9 | -------------------------------------------------------------------------------- /view/frontend/templates/customer.phtml: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | ?> 8 | 9 | 93 | 94 | -------------------------------------------------------------------------------- /view/frontend/templates/order.phtml: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | ?> 8 | 9 | 96 | 97 | -------------------------------------------------------------------------------- /view/frontend/templates/url.phtml: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | ?> 8 | 9 | 44 | 45 | --------------------------------------------------------------------------------