Version Notes
- Change email validation service
- Fix bugs
- Add intuitive cache system
Download this release
Release Info
| Developer | Experian |
| Extension | Experian_Qas |
| Version | 1.3.0 |
| Comparing to | |
| See all releases | |
Version 1.3.0
- app/code/community/Experian/Qas/Block/AddressField.php +76 -0
- app/code/community/Experian/Qas/Block/AddressField/Billing.php +20 -0
- app/code/community/Experian/Qas/Block/AddressField/Shipping.php +20 -0
- app/code/community/Experian/Qas/Block/Adminhtml/System/Config/Form/IntuitiveCountryFieldset.php +155 -0
- app/code/community/Experian/Qas/Block/Autocomplete.php +90 -0
- app/code/community/Experian/Qas/Block/Interaction.php +63 -0
- app/code/community/Experian/Qas/Block/Verification.php +123 -0
- app/code/community/Experian/Qas/Helper/Data.php +466 -0
- app/code/community/Experian/Qas/Model/Observer.php +71 -0
- app/code/community/Experian/Qas/Model/Qascall.php +217 -0
- app/code/community/Experian/Qas/Model/System/Config/Source/Engine.php +31 -0
- app/code/community/Experian/Qas/Model/System/Config/Source/SpecialEngine.php +17 -0
- app/code/community/Experian/Qas/controllers/ProcessController.php +217 -0
- app/code/community/Experian/Qas/etc/adminhtml.xml +30 -0
- app/code/community/Experian/Qas/etc/config.xml +414 -0
- app/code/community/Experian/Qas/etc/jstranslator.xml +137 -0
- app/code/community/Experian/Qas/etc/system.xml +125 -0
- app/code/community/Experian/Qas/etc/wsv3.wsdl +908 -0
- app/code/community/Experian/Qas/sql/qas_setup/mysql4-install-0.0.1.php +68 -0
- app/design/frontend/base/default/layout/experian_qas.xml +38 -0
- app/design/frontend/base/default/template/qas/checkout/billing.phtml +124 -0
- app/design/frontend/base/default/template/qas/checkout/shipping.phtml +122 -0
- app/design/frontend/base/default/template/qas/customer/address/edit.phtml +128 -0
- app/design/frontend/base/default/template/qas/email_validate.phtml +55 -0
- app/design/frontend/base/default/template/qas/interaction.phtml +14 -0
- app/design/frontend/base/default/template/qas/intuitive.phtml +38 -0
- app/design/frontend/base/default/template/qas/popin.phtml +38 -0
- app/etc/modules/Experian_Qas.xml +17 -0
- app/locale/en_US/Experian_Qas.csv +42 -0
- app/locale/fr_FR/Experian_Qas.csv +42 -0
- package.xml +26 -0
- skin/frontend/base/default/qas/css/styles.css +61 -0
- skin/frontend/base/default/qas/images/bkg_btn-close.gif +0 -0
- skin/frontend/base/default/qas/images/bkg_btn-close2.gif +0 -0
- skin/frontend/base/default/qas/js/intuitive.js +124 -0
- skin/frontend/base/default/qas/js/searchengine.js +26 -0
app/code/community/Experian/Qas/Block/AddressField.php
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Block_AddressField extends Mage_Core_Block_Template
|
| 11 |
+
{
|
| 12 |
+
protected $_suffix = '';
|
| 13 |
+
protected $_street1 = 'street_1';
|
| 14 |
+
protected $_street2 = 'street_2';
|
| 15 |
+
protected $_zip = 'zip';
|
| 16 |
+
protected $_city = 'city';
|
| 17 |
+
protected $_region = 'region_id';
|
| 18 |
+
protected $_country = 'country';
|
| 19 |
+
protected $_formName = 'form-validate';
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
public function getSuffix()
|
| 23 |
+
{
|
| 24 |
+
return $this->_suffix;
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
public function getStreet1()
|
| 28 |
+
{
|
| 29 |
+
return $this->_street1;
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
public function getStreet2()
|
| 33 |
+
{
|
| 34 |
+
return $this->_street2;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
public function getZip()
|
| 38 |
+
{
|
| 39 |
+
return $this->_zip;
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
public function getCity()
|
| 43 |
+
{
|
| 44 |
+
return $this->_city;
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
public function getRegion()
|
| 48 |
+
{
|
| 49 |
+
return $this->_region;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
/**
|
| 53 |
+
* return the right name of the input or select
|
| 54 |
+
* @param input type
|
| 55 |
+
* @return string
|
| 56 |
+
*/
|
| 57 |
+
public function getRegionInput($type)
|
| 58 |
+
{
|
| 59 |
+
if($type == 'text') {
|
| 60 |
+
return $this->_region;
|
| 61 |
+
} else {
|
| 62 |
+
$name = explode("_", $this->_region);
|
| 63 |
+
return $name[0];
|
| 64 |
+
}
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
public function getCountry()
|
| 68 |
+
{
|
| 69 |
+
return $this->_country;
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
public function getFormName()
|
| 73 |
+
{
|
| 74 |
+
return $this->_formName;
|
| 75 |
+
}
|
| 76 |
+
}
|
app/code/community/Experian/Qas/Block/AddressField/Billing.php
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Block_AddressField_Billing extends Experian_Qas_Block_AddressField
|
| 11 |
+
{
|
| 12 |
+
protected $_suffix = 'BILLING';
|
| 13 |
+
protected $_street1 = 'billing:street1';
|
| 14 |
+
protected $_street2 = 'billing:street2';
|
| 15 |
+
protected $_zip = 'billing:postcode';
|
| 16 |
+
protected $_city = 'billing:city';
|
| 17 |
+
protected $_region = 'billing:region_id';
|
| 18 |
+
protected $_country = 'billing:country_id';
|
| 19 |
+
protected $_formName = 'co-billing-form';
|
| 20 |
+
}
|
app/code/community/Experian/Qas/Block/AddressField/Shipping.php
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Block_AddressField_Shipping extends Experian_Qas_Block_AddressField
|
| 11 |
+
{
|
| 12 |
+
protected $_suffix = 'SHIPPING';
|
| 13 |
+
protected $_street1 = 'shipping:street1';
|
| 14 |
+
protected $_street2 = 'shipping:street2';
|
| 15 |
+
protected $_zip = 'shipping:postcode';
|
| 16 |
+
protected $_city = 'shipping:city';
|
| 17 |
+
protected $_region = 'shipping:region_id';
|
| 18 |
+
protected $_country = 'shipping:country_id';
|
| 19 |
+
protected $_formName = 'co-shipping-form';
|
| 20 |
+
}
|
app/code/community/Experian/Qas/Block/Adminhtml/System/Config/Form/IntuitiveCountryFieldset.php
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Magento Enterprise Edition
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Magento Enterprise Edition License
|
| 8 |
+
* that is bundled with this package in the file LICENSE_EE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://www.magentocommerce.com/license/enterprise-edition
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* @category Mage
|
| 22 |
+
* @package Mage_Adminhtml
|
| 23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
| 24 |
+
* @license http://www.magentocommerce.com/license/enterprise-edition
|
| 25 |
+
*/
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
/**
|
| 29 |
+
* Config form fieldset renderer
|
| 30 |
+
*
|
| 31 |
+
* @category Mage
|
| 32 |
+
* @package Mage_Adminhtml
|
| 33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
| 34 |
+
*/
|
| 35 |
+
class Experian_Qas_Block_Adminhtml_System_Config_Form_IntuitiveCountryFieldset
|
| 36 |
+
extends Mage_Adminhtml_Block_System_Config_Form_Fieldset
|
| 37 |
+
{
|
| 38 |
+
protected $_experianDatasets = array();
|
| 39 |
+
|
| 40 |
+
/**
|
| 41 |
+
* Retrieve countries available
|
| 42 |
+
*
|
| 43 |
+
* @return array
|
| 44 |
+
*/
|
| 45 |
+
protected function _getCountryAvailables()
|
| 46 |
+
{
|
| 47 |
+
if (empty($this->_experianDatasets)) {
|
| 48 |
+
$this->_experianDatasets = Mage::helper('experian_qas')->getCountryAvailable();
|
| 49 |
+
|
| 50 |
+
// Remove FRI if the client get FR3 activated
|
| 51 |
+
if (isset($this->_experianDatasets[Experian_Qas_Helper_Data::INTUITIVE_DATASET_FRANCE_BIS])) {
|
| 52 |
+
unset($this->_experianDatasets[Experian_Qas_Helper_Data::INTUITIVE_DATASET_FRANCE_BIS]);
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
// Remove FRI if the client get FRI activated
|
| 56 |
+
if (isset($this->_experianDatasets[Experian_Qas_Helper_Data::INTUITIVE_DATASET_FRANCE])) {
|
| 57 |
+
unset($this->_experianDatasets[Experian_Qas_Helper_Data::INTUITIVE_DATASET_FRANCE]);
|
| 58 |
+
}
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
return $this->_experianDatasets;
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
/**
|
| 65 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
| 66 |
+
*/
|
| 67 |
+
protected function _addCountryElements(Varien_Data_Form_Element_Abstract $element)
|
| 68 |
+
{
|
| 69 |
+
$countries = $this->_getCountryAvailables();
|
| 70 |
+
$configData = $this->getConfigData();
|
| 71 |
+
|
| 72 |
+
foreach ($countries as $countryId => $countryName) {
|
| 73 |
+
$path = 'qas_address_verifier/address_search_engine/search_engine_'.$countryId;
|
| 74 |
+
$fieldId = 'qas_address_verifier_address_search_engine_search_engine_'.$countryId;
|
| 75 |
+
|
| 76 |
+
if (isset($configData[$path])) {
|
| 77 |
+
$data = $configData[$path];
|
| 78 |
+
$inherit = false;
|
| 79 |
+
} else {
|
| 80 |
+
$data = (int)(string)$this->getForm()->getConfigRoot()->descend($path);
|
| 81 |
+
$inherit = true;
|
| 82 |
+
|
| 83 |
+
if ($data == 0) {
|
| 84 |
+
$data = '';
|
| 85 |
+
$inherit = false;
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
$element->addField(
|
| 90 |
+
$fieldId,
|
| 91 |
+
'select',
|
| 92 |
+
array(
|
| 93 |
+
'name' => 'groups[address_search_engine][fields][search_engine_'.$countryId.'][value]',
|
| 94 |
+
'label' => $countryName . ' [' . $countryId . ']',
|
| 95 |
+
'scope' => 'default',
|
| 96 |
+
'scope_label' => Mage::helper('adminhtml')->__('[GLOBAL]'),
|
| 97 |
+
'values' => Mage::getModel('experian_qas/system_config_source_engine')->toOptionArray(),
|
| 98 |
+
'value' => $data,
|
| 99 |
+
'inherit' => $inherit,
|
| 100 |
+
'can_use_default_value' => '0',
|
| 101 |
+
'can_use_website_value' => '0',
|
| 102 |
+
'can_use_store_value' => '0',
|
| 103 |
+
),
|
| 104 |
+
$after=false
|
| 105 |
+
)
|
| 106 |
+
->setRenderer(Mage::getBlockSingleton('adminhtml/system_config_form_field'));
|
| 107 |
+
}
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
/**
|
| 111 |
+
* Delete old country configuration
|
| 112 |
+
*/
|
| 113 |
+
protected function _refreshCountryDb()
|
| 114 |
+
{
|
| 115 |
+
$countries = $this->_getCountryAvailables();
|
| 116 |
+
|
| 117 |
+
// Do not delete configuration if 0 country is available (maybe conenction pb)
|
| 118 |
+
if (!empty($countries)) {
|
| 119 |
+
$configs = Mage::getModel('core/config_data')->getCollection()
|
| 120 |
+
->addFieldToFilter('path', array('like' => 'qas_address_verifier/address_search_engine/search_engine_%'));
|
| 121 |
+
|
| 122 |
+
foreach ($configs as $config) {
|
| 123 |
+
$configPath = $config->getData('path');
|
| 124 |
+
$countryId = substr($configPath, -3);
|
| 125 |
+
|
| 126 |
+
if (!array_key_exists($countryId, $countries)) {
|
| 127 |
+
$config->delete();
|
| 128 |
+
}
|
| 129 |
+
}
|
| 130 |
+
}
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
/**
|
| 134 |
+
* Render fieldset html
|
| 135 |
+
*
|
| 136 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
| 137 |
+
* @return string
|
| 138 |
+
*/
|
| 139 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
| 140 |
+
{
|
| 141 |
+
$this->setElement($element);
|
| 142 |
+
$html = $this->_getHeaderHtml($element);
|
| 143 |
+
|
| 144 |
+
$this->_addCountryElements($element);
|
| 145 |
+
$this->_refreshCountryDb();
|
| 146 |
+
|
| 147 |
+
foreach ($element->getSortedElements() as $field) {
|
| 148 |
+
$html.= $field->toHtml();
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
$html .= $this->_getFooterHtml($element);
|
| 152 |
+
|
| 153 |
+
return $html;
|
| 154 |
+
}
|
| 155 |
+
}
|
app/code/community/Experian/Qas/Block/Autocomplete.php
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Autocompletion block - used for Intuitive Engine
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Block_Autocomplete extends Mage_Core_Block_Abstract
|
| 11 |
+
{
|
| 12 |
+
protected $_suggestData = null;
|
| 13 |
+
|
| 14 |
+
/**
|
| 15 |
+
* Return html result
|
| 16 |
+
*
|
| 17 |
+
* @return string html result
|
| 18 |
+
*/
|
| 19 |
+
protected function _toHtml()
|
| 20 |
+
{
|
| 21 |
+
$html = '';
|
| 22 |
+
|
| 23 |
+
if (!$this->_beforeToHtml()) {
|
| 24 |
+
return $html;
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
$suggestData = $this->getSuggestData();
|
| 28 |
+
if (!($count = count($suggestData))) {
|
| 29 |
+
return $html;
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
$count--;
|
| 33 |
+
|
| 34 |
+
$html = '<ul><li style="display:none"></li>';
|
| 35 |
+
foreach ($suggestData as $index => $item) {
|
| 36 |
+
if ($index == 0) {
|
| 37 |
+
$item['row_class'] .= ' first';
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
if ($index == $count) {
|
| 41 |
+
$item['row_class'] .= ' last';
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
$html .= '<li moniker="'.$this->htmlEscape($item['value']).'" title="'.$this->htmlEscape($item['title']).'" class="'.$item['row_class'].'">'
|
| 45 |
+
. $this->htmlEscape($item['title']).'</li>';
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
$html.= '</ul>';
|
| 49 |
+
|
| 50 |
+
return $html;
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
/**
|
| 54 |
+
* Format the addresses response for Intuitive Engine
|
| 55 |
+
*
|
| 56 |
+
* @return array
|
| 57 |
+
*/
|
| 58 |
+
protected function getSuggestData()
|
| 59 |
+
{
|
| 60 |
+
if (is_null($this->_suggestData)) {
|
| 61 |
+
|
| 62 |
+
$picklistEntries = $this->getPicklistEntries();
|
| 63 |
+
$response = array();
|
| 64 |
+
$data = array();
|
| 65 |
+
$counter = 0;
|
| 66 |
+
|
| 67 |
+
if (is_array($picklistEntries)) {
|
| 68 |
+
foreach ($picklistEntries as $entry){
|
| 69 |
+
$_data = array(
|
| 70 |
+
'value' => $entry->Moniker,
|
| 71 |
+
'title' => $entry->PartialAddress,
|
| 72 |
+
'row_class' => (++$counter)%2?'odd':'even'
|
| 73 |
+
);
|
| 74 |
+
array_unshift($data, $_data);
|
| 75 |
+
}
|
| 76 |
+
} elseif ($picklistEntries && ($picklistEntries->Score > 0)) { // only one result
|
| 77 |
+
$_data = array(
|
| 78 |
+
'value' => $picklistEntries->Moniker,
|
| 79 |
+
'title' => $picklistEntries->PartialAddress,
|
| 80 |
+
'row_class' => (++$counter)%2?'odd':'even'
|
| 81 |
+
);
|
| 82 |
+
array_unshift($data, $_data);
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
$this->_suggestData = $data;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
return $this->_suggestData;
|
| 89 |
+
}
|
| 90 |
+
}
|
app/code/community/Experian/Qas/Block/Interaction.php
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Block - used for Singleline Engine
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Block_Interaction extends Mage_Core_Block_Template
|
| 11 |
+
{
|
| 12 |
+
const INTERACTION_FORM_NAME = 'interaction-form';
|
| 13 |
+
|
| 14 |
+
protected $_suggestData = null;
|
| 15 |
+
protected $_template = 'qas/interaction.phtml';
|
| 16 |
+
|
| 17 |
+
/**
|
| 18 |
+
* Get interaction form name
|
| 19 |
+
*
|
| 20 |
+
* @return string
|
| 21 |
+
*/
|
| 22 |
+
public function getInteractionFormName()
|
| 23 |
+
{
|
| 24 |
+
return self::INTERACTION_FORM_NAME;
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
/**
|
| 28 |
+
* Format the addresses response for Intuitive Engine
|
| 29 |
+
*
|
| 30 |
+
* @return array
|
| 31 |
+
*/
|
| 32 |
+
public function getSuggestData()
|
| 33 |
+
{
|
| 34 |
+
if (is_null($this->_suggestData)) {
|
| 35 |
+
|
| 36 |
+
$picklistEntries = $this->getPicklistEntries();
|
| 37 |
+
$response = array();
|
| 38 |
+
$data = array();
|
| 39 |
+
$counter = 0;
|
| 40 |
+
|
| 41 |
+
if (is_array($picklistEntries)) {
|
| 42 |
+
foreach ($picklistEntries as $entry) {
|
| 43 |
+
$_data = array(
|
| 44 |
+
'value' => $entry->Moniker,
|
| 45 |
+
'title' => $entry->PartialAddress,
|
| 46 |
+
'row_class' => (++$counter)%2?'odd':'even'
|
| 47 |
+
);
|
| 48 |
+
array_push($data, $_data);
|
| 49 |
+
}
|
| 50 |
+
} elseif ($picklistEntries && ($picklistEntries->Score > 0)) { // only one result
|
| 51 |
+
$_data = array(
|
| 52 |
+
'value' => $picklistEntries->Moniker,
|
| 53 |
+
'title' => $picklistEntries->PartialAddress,
|
| 54 |
+
'row_class' => (++$counter)%2?'odd':'even'
|
| 55 |
+
);
|
| 56 |
+
array_push($data, $_data);
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
$this->_suggestData = $data;
|
| 60 |
+
}
|
| 61 |
+
return $this->_suggestData;
|
| 62 |
+
}
|
| 63 |
+
}
|
app/code/community/Experian/Qas/Block/Verification.php
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Block - used for Verification Engine
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Block_Verification extends Mage_Core_Block_Abstract
|
| 11 |
+
{
|
| 12 |
+
const LEVEL_NONE = 'None';
|
| 13 |
+
const LEVEL_INTERACTION_REQUIRED = 'InteractionRequired';
|
| 14 |
+
const LEVEL_STREET_PARTIAL = 'StreetPartial';
|
| 15 |
+
const LEVEL_MULTIPLE = 'Multiple';
|
| 16 |
+
const LEVEL_VERIFIED = 'Verified';
|
| 17 |
+
const TYPE_ADDRESS = 1;
|
| 18 |
+
const TYPE_SHIPPING = 2;
|
| 19 |
+
const TYPE_BILLING = 3;
|
| 20 |
+
|
| 21 |
+
/**
|
| 22 |
+
* Format the addresses response for Intuitive Engine
|
| 23 |
+
*
|
| 24 |
+
* @return array
|
| 25 |
+
*/
|
| 26 |
+
protected function _toHtml()
|
| 27 |
+
{
|
| 28 |
+
$addressesHtml = '';
|
| 29 |
+
$helper = $this->helper('experian_qas');
|
| 30 |
+
$result = $this->getResult();
|
| 31 |
+
|
| 32 |
+
if ($result && $result->VerifyLevel) {
|
| 33 |
+
$level = $result->VerifyLevel;
|
| 34 |
+
|
| 35 |
+
switch ($level) {
|
| 36 |
+
case self::LEVEL_NONE:
|
| 37 |
+
case self::LEVEL_INTERACTION_REQUIRED:
|
| 38 |
+
$addressesHtml = "
|
| 39 |
+
<script>
|
| 40 |
+
$$('.interactionWindow .display').each(function(item){
|
| 41 |
+
item.hide();
|
| 42 |
+
});
|
| 43 |
+
</script>
|
| 44 |
+
Your address could not be verified. Please make sure it's correct or click on <strong>Keep my address</strong>.";
|
| 45 |
+
break;
|
| 46 |
+
|
| 47 |
+
case self::LEVEL_STREET_PARTIAL:
|
| 48 |
+
case self::LEVEL_MULTIPLE:
|
| 49 |
+
$picklistEntries = $result->QAPicklist->PicklistEntry;
|
| 50 |
+
$addressesHtml = $this->getLayout()->createBlock('experian_qas/interaction')
|
| 51 |
+
->setPicklistEntries($picklistEntries)
|
| 52 |
+
->toHtml() .
|
| 53 |
+
"<script>
|
| 54 |
+
$$('.interactionWindow .display').each(function(item){
|
| 55 |
+
item.show();
|
| 56 |
+
});
|
| 57 |
+
</script>";
|
| 58 |
+
break;
|
| 59 |
+
|
| 60 |
+
case self::LEVEL_VERIFIED:
|
| 61 |
+
$params = null;
|
| 62 |
+
switch ( $this->getEdit())
|
| 63 |
+
{
|
| 64 |
+
case self::TYPE_ADDRESS:
|
| 65 |
+
$params = Mage::getSingleton('core/layout')->createBlock("experian_qas/addressField");
|
| 66 |
+
break;
|
| 67 |
+
case self::TYPE_SHIPPING:
|
| 68 |
+
$params = Mage::getSingleton('core/layout')->createBlock("experian_qas/addressField_shipping");
|
| 69 |
+
break;
|
| 70 |
+
case self::TYPE_BILLING:
|
| 71 |
+
$params =Mage::getSingleton('core/layout')->createBlock("experian_qas/addressField_billing");
|
| 72 |
+
break;
|
| 73 |
+
default:
|
| 74 |
+
break;
|
| 75 |
+
}
|
| 76 |
+
$interResult = $helper->getMappedAddress($result->QAAddress->AddressLine, $this->getCountryId());
|
| 77 |
+
if (ctype_digit($interResult['region'])) {
|
| 78 |
+
$inputType = 'select';
|
| 79 |
+
} else {
|
| 80 |
+
$inputType = 'text';
|
| 81 |
+
}
|
| 82 |
+
$addressesHtml =
|
| 83 |
+
"<script>
|
| 84 |
+
$$('.interactionWindow .display').each(function(item){
|
| 85 |
+
item.hide();
|
| 86 |
+
});
|
| 87 |
+
if(!isNaN(".$interResult['region'].")) {
|
| 88 |
+
var current_select = $('".$params->getRegion()."');
|
| 89 |
+
var current_non = current_select.select('option[value=\"".$interResult['region']."\"]');
|
| 90 |
+
var options = current_select.select(\"option\");
|
| 91 |
+
if (current_non[0]) {
|
| 92 |
+
options.each(function(item)
|
| 93 |
+
{
|
| 94 |
+
if(item.value == current_non[0].value) {
|
| 95 |
+
item.selected = true;
|
| 96 |
+
}
|
| 97 |
+
});
|
| 98 |
+
}
|
| 99 |
+
}
|
| 100 |
+
$('".$params->getStreet1()."').value = '".$interResult['street_1']."';
|
| 101 |
+
$('".$params->getStreet2()."').value = '".$interResult['street_2']."';
|
| 102 |
+
$('".$params->getCity()."').value = '".$interResult['city']."';
|
| 103 |
+
$('".$params->getRegionInput($inputType)."').value = '".$interResult['region']."';
|
| 104 |
+
$('".$params->getZip()."').value = '".$interResult['zip']."';
|
| 105 |
+
</script>
|
| 106 |
+
Your address has been verified and it's valid. Please click on <strong>Keep my address</strong>.";
|
| 107 |
+
break;
|
| 108 |
+
|
| 109 |
+
default:
|
| 110 |
+
$addressesHtml = "
|
| 111 |
+
<script>
|
| 112 |
+
$$('.interactionWindow .display').each(function(item){
|
| 113 |
+
item.hide();
|
| 114 |
+
});
|
| 115 |
+
</script>
|
| 116 |
+
Your address could not be verified. Please make sure it's correct and click on <strong>Keep my address</strong>. Click on <strong>Close</strong> if you want to modify it.";
|
| 117 |
+
break;
|
| 118 |
+
}
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
return $addressesHtml;
|
| 122 |
+
}
|
| 123 |
+
}
|
app/code/community/Experian/Qas/Helper/Data.php
ADDED
|
@@ -0,0 +1,466 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Helper
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Helper_Data extends Mage_Core_Helper_Abstract
|
| 11 |
+
{
|
| 12 |
+
const XML_PATH_ENABLED = 'qas_address_verifier/general/enable';
|
| 13 |
+
const XML_PATH_API_USER = 'qas_address_verifier/general/api_user';
|
| 14 |
+
const XML_PATH_API_PASSWORD = 'qas_address_verifier/general/api_password';
|
| 15 |
+
const XML_PATH_WSDL_NAME = 'qas_address_verifier/general/wsdl_name';
|
| 16 |
+
const XML_PATH_ONDEMAND_URL = 'qas_address_verifier/general/on_demand_url';
|
| 17 |
+
|
| 18 |
+
const XML_PATH_INTUTIVE_ENABLED = 'qas_address_verifier/address_search_engine/enable_intuitive_search';
|
| 19 |
+
const XML_PATH_SEARCH_ENGINE = 'qas_address_verifier/address_search_engine/search_engine';
|
| 20 |
+
const XML_PATH_DATASETS = 'qas_address_verifier/address_search_engine/search_datasets';
|
| 21 |
+
const XML_PATH_CACHE_ENABLED = 'qas_address_verifier/address_search_engine/enable_cache';
|
| 22 |
+
|
| 23 |
+
const XML_PATH_EMAIL_VALIDATE_ENABLED = 'qas_address_verifier/email_validate/enable_email_validate';
|
| 24 |
+
const XML_PATH_EMAIL_VALIDATE_LICENSE = 'qas_address_verifier/email_validate/license_email_validate';
|
| 25 |
+
const XML_PATH_EMAIL_VALIDATE_URL = 'qas_address_verifier/email_validate/email_validate_url';
|
| 26 |
+
const XML_PATH_EMAIL_ACCEPT_UNKNOWNS = 'qas_address_verifier/email_validate/accept_unknowns_emails';
|
| 27 |
+
|
| 28 |
+
const NODE_PATH_ADDRESS_MAPPER = 'global/mapping/address';
|
| 29 |
+
const NODE_PATH_DATASET_MAPPER = 'global/mapping/dataset';
|
| 30 |
+
const NODE_PATH_NOMAP = 'global/mapping/nomap/countries';
|
| 31 |
+
const NODE_PATH_NOMAP_ADDRESS_KEYS = 'global/mapping/nomap/address_keys';
|
| 32 |
+
const INTUITIVE_DATASET_FRANCE = 'FRI';
|
| 33 |
+
const INTUITIVE_DATASET_FRANCE_BIS = 'FR3';
|
| 34 |
+
|
| 35 |
+
const INTUITIVE_ENGINE_CODE = 'Intuitive';
|
| 36 |
+
const SINGLELINE_ENGINE_CODE = 'Singleline';
|
| 37 |
+
const VERIFICATION_ENGINE_CODE = 'Verification';
|
| 38 |
+
|
| 39 |
+
const ADDRESS_LAYOUT = 'MAGENTO2012';
|
| 40 |
+
|
| 41 |
+
const LOG_FILENAME = 'experian_qas.log';
|
| 42 |
+
|
| 43 |
+
const QUERY_PARAM = 'query';
|
| 44 |
+
const QUERY_MONIKER = 'moniker';
|
| 45 |
+
const QUERY_COUNTRY = 'country_id';
|
| 46 |
+
|
| 47 |
+
const INTERACTION_FORM_NAME = 'interaction-form';
|
| 48 |
+
|
| 49 |
+
protected $_datasets = NULL;
|
| 50 |
+
|
| 51 |
+
/**
|
| 52 |
+
* Checks if QAS Address & Email Verifier is enabled
|
| 53 |
+
*
|
| 54 |
+
* @return boolean
|
| 55 |
+
*/
|
| 56 |
+
public function isEnabled()
|
| 57 |
+
{
|
| 58 |
+
return Mage::getStoreConfig(self::XML_PATH_ENABLED);
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
/**
|
| 62 |
+
* Retrive the Api user from configuration
|
| 63 |
+
*
|
| 64 |
+
* @return string
|
| 65 |
+
*/
|
| 66 |
+
public function getApiUser()
|
| 67 |
+
{
|
| 68 |
+
return Mage::getStoreConfig(self::XML_PATH_API_USER);
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
/**
|
| 72 |
+
* Retrieve Api password from congfiguration
|
| 73 |
+
*
|
| 74 |
+
* @return string
|
| 75 |
+
*/
|
| 76 |
+
public function getApiPassword()
|
| 77 |
+
{
|
| 78 |
+
return Mage::getStoreConfig(self::XML_PATH_API_PASSWORD);
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
/**
|
| 82 |
+
* Retrieve WSDL Name
|
| 83 |
+
*
|
| 84 |
+
* @return string
|
| 85 |
+
*/
|
| 86 |
+
public function getWsdlName()
|
| 87 |
+
{
|
| 88 |
+
return Mage::getStoreConfig(self::XML_PATH_WSDL_NAME);
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
/**
|
| 92 |
+
* Retrieve Ondemand website URL
|
| 93 |
+
*
|
| 94 |
+
* @return string
|
| 95 |
+
*/
|
| 96 |
+
public function getOndemandUrl()
|
| 97 |
+
{
|
| 98 |
+
return Mage::getStoreConfig(self::XML_PATH_ONDEMAND_URL);
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
/**
|
| 102 |
+
* Check if Intuitive Engine is enabled
|
| 103 |
+
*
|
| 104 |
+
* @return boolean
|
| 105 |
+
*/
|
| 106 |
+
public function isIntuitiveEnabled()
|
| 107 |
+
{
|
| 108 |
+
return $this->isEnabled() &&
|
| 109 |
+
Mage::getStoreConfig(self::XML_PATH_INTUTIVE_ENABLED);
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
+
public function isCacheEnabled()
|
| 113 |
+
{
|
| 114 |
+
return Mage::getStoreConfig(self::XML_PATH_CACHE_ENABLED);
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
/**
|
| 118 |
+
* Check if Singleline or Verification is enabled
|
| 119 |
+
*
|
| 120 |
+
* @return boolean
|
| 121 |
+
*/
|
| 122 |
+
public function isSearchEngineEnabled()
|
| 123 |
+
{
|
| 124 |
+
return $this->isEnabled();
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
/**
|
| 128 |
+
* Check if Email Validate is enabled and can be used
|
| 129 |
+
*
|
| 130 |
+
* @return boolean
|
| 131 |
+
*/
|
| 132 |
+
public function isEmailValidateEnabled()
|
| 133 |
+
{
|
| 134 |
+
return $this->isEnabled() &&
|
| 135 |
+
Mage::getStoreConfig(self::XML_PATH_EMAIL_VALIDATE_ENABLED) &&
|
| 136 |
+
(boolean)Mage::getStoreConfig(self::XML_PATH_EMAIL_VALIDATE_LICENSE);
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
/**
|
| 140 |
+
* Retrieve Email Validate License key
|
| 141 |
+
*
|
| 142 |
+
* @return string
|
| 143 |
+
*/
|
| 144 |
+
public function getEmailValidateLicense()
|
| 145 |
+
{
|
| 146 |
+
return Mage::getStoreConfig(self::XML_PATH_EMAIL_VALIDATE_LICENSE);
|
| 147 |
+
}
|
| 148 |
+
|
| 149 |
+
/**
|
| 150 |
+
* Retrieve Email Validate URL request
|
| 151 |
+
*
|
| 152 |
+
* @return string
|
| 153 |
+
*/
|
| 154 |
+
public function getEmailValidateUrl()
|
| 155 |
+
{
|
| 156 |
+
return Mage::getStoreConfig(self::XML_PATH_EMAIL_VALIDATE_URL);
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
public function isAcceptUnknowsEmails()
|
| 160 |
+
{
|
| 161 |
+
return Mage::getStoreConfig(self::XML_PATH_EMAIL_ACCEPT_UNKNOWNS);
|
| 162 |
+
}
|
| 163 |
+
|
| 164 |
+
/**
|
| 165 |
+
* This willl probably be removed, with its const
|
| 166 |
+
*
|
| 167 |
+
* @return type
|
| 168 |
+
*/
|
| 169 |
+
public function getInteractionFormName()
|
| 170 |
+
{
|
| 171 |
+
return self::INTERACTION_FORM_NAME;
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
/**
|
| 175 |
+
* Retrieve the currently used search engine (Singleline or Verification)
|
| 176 |
+
*
|
| 177 |
+
* @param string $dataset $dataset
|
| 178 |
+
*
|
| 179 |
+
* @return string
|
| 180 |
+
*/
|
| 181 |
+
public function getSearchEngine($dataset)
|
| 182 |
+
{
|
| 183 |
+
$path = self::XML_PATH_SEARCH_ENGINE . '_' . $dataset;
|
| 184 |
+
return Mage::getStoreConfig($path);
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
/**
|
| 188 |
+
* Get the dataset used for the country
|
| 189 |
+
* This information is retrieved from config.xml file
|
| 190 |
+
*
|
| 191 |
+
* @param string $country $country
|
| 192 |
+
*
|
| 193 |
+
* @return string
|
| 194 |
+
*/
|
| 195 |
+
public function getCountryDataset($country)
|
| 196 |
+
{
|
| 197 |
+
$dataset = $country;
|
| 198 |
+
|
| 199 |
+
if (is_null($this->_datasets)) {
|
| 200 |
+
$this->_datasets = Mage::getConfig()
|
| 201 |
+
->getNode(self::NODE_PATH_DATASET_MAPPER)
|
| 202 |
+
->asArray();
|
| 203 |
+
}
|
| 204 |
+
|
| 205 |
+
if (isset($this->_datasets[$country])) {
|
| 206 |
+
$dataset = $this->_datasets[$country];
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
return $dataset;
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
public function getCountryAvailable()
|
| 213 |
+
{
|
| 214 |
+
$login = $this->getApiUser();
|
| 215 |
+
$password = $this->getApiPassword();
|
| 216 |
+
$api = Mage::getSingleton('experian_qas/qascall');
|
| 217 |
+
$apiDatasets = $api->getDataSets(false);
|
| 218 |
+
$datasets = array();
|
| 219 |
+
|
| 220 |
+
foreach ($apiDatasets as $ds) {
|
| 221 |
+
$datasets[$ds->ID] = $ds->Name;
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
return $datasets;
|
| 225 |
+
}
|
| 226 |
+
|
| 227 |
+
/**
|
| 228 |
+
* Prepare the query string for use in the API call
|
| 229 |
+
*
|
| 230 |
+
* @param array $address $address
|
| 231 |
+
*
|
| 232 |
+
* @return string
|
| 233 |
+
*/
|
| 234 |
+
public function getQueryString($address)
|
| 235 |
+
{
|
| 236 |
+
$query = '';
|
| 237 |
+
|
| 238 |
+
if (isset($address['street'][0])) {
|
| 239 |
+
$query .= $address['street'][0];
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
if (isset($address['street'][1])) {
|
| 243 |
+
$query .= ' ' . $address['street'][1];
|
| 244 |
+
}
|
| 245 |
+
|
| 246 |
+
if (isset($address['postcode'])) {
|
| 247 |
+
$query .= ', ' . $address['postcode'];
|
| 248 |
+
}
|
| 249 |
+
|
| 250 |
+
// need the region
|
| 251 |
+
|
| 252 |
+
if (isset($address['city'])) {
|
| 253 |
+
$query .= ', ' . $address['city'];
|
| 254 |
+
}
|
| 255 |
+
|
| 256 |
+
return $query;
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
/**
|
| 260 |
+
* Check if a dataset is within the selected available datasets
|
| 261 |
+
*
|
| 262 |
+
* @param string $dataset $dataset
|
| 263 |
+
*
|
| 264 |
+
* @return boolean
|
| 265 |
+
*/
|
| 266 |
+
public function isDatasetEnabled($dataset)
|
| 267 |
+
{
|
| 268 |
+
$enabledDatasets = Mage::getStoreConfig(self::XML_PATH_DATASETS);
|
| 269 |
+
return in_array($dataset, explode(',', $enabledDatasets));
|
| 270 |
+
}
|
| 271 |
+
|
| 272 |
+
/**
|
| 273 |
+
* Log a message inside experian_qas.log filename
|
| 274 |
+
*
|
| 275 |
+
* @param string $message $messages
|
| 276 |
+
*
|
| 277 |
+
* @return void
|
| 278 |
+
*/
|
| 279 |
+
public function log($message)
|
| 280 |
+
{
|
| 281 |
+
Mage::log($message, NULL, self::LOG_FILENAME, true);
|
| 282 |
+
}
|
| 283 |
+
|
| 284 |
+
/**
|
| 285 |
+
* Return the layout that will be used to normalize the address
|
| 286 |
+
*
|
| 287 |
+
* @return string
|
| 288 |
+
*/
|
| 289 |
+
public function getAddressLayout()
|
| 290 |
+
{
|
| 291 |
+
return self::ADDRESS_LAYOUT;
|
| 292 |
+
}
|
| 293 |
+
|
| 294 |
+
/**
|
| 295 |
+
* Map QAS address fields with the module
|
| 296 |
+
* Retrived from config.xml <mapping> tag
|
| 297 |
+
*
|
| 298 |
+
* @return array
|
| 299 |
+
*/
|
| 300 |
+
public function getAddressFieldMapper()
|
| 301 |
+
{
|
| 302 |
+
$map = array();
|
| 303 |
+
$node = Mage::getConfig()->getNode(self::NODE_PATH_ADDRESS_MAPPER);
|
| 304 |
+
$mapping = $node->asArray();
|
| 305 |
+
|
| 306 |
+
foreach ($mapping as $index => $keyvalue) {
|
| 307 |
+
$map[$keyvalue['key']] = $keyvalue['value'];
|
| 308 |
+
}
|
| 309 |
+
|
| 310 |
+
return $map;
|
| 311 |
+
}
|
| 312 |
+
|
| 313 |
+
/**
|
| 314 |
+
* Get not mapped address by using an array of countries where we can't match
|
| 315 |
+
* with our internal config.
|
| 316 |
+
*
|
| 317 |
+
* @return array
|
| 318 |
+
*/
|
| 319 |
+
public function getNotMappedCountries()
|
| 320 |
+
{
|
| 321 |
+
$map = array();
|
| 322 |
+
$node = Mage::getConfig()->getNode(self::NODE_PATH_NOMAP);
|
| 323 |
+
$mapping = $node->asArray();
|
| 324 |
+
return array_keys($mapping);
|
| 325 |
+
}
|
| 326 |
+
|
| 327 |
+
/**
|
| 328 |
+
* Combine address keys with the web server resource to be able to recognize each input .
|
| 329 |
+
*
|
| 330 |
+
* @param array $arrayResult $arrayResult
|
| 331 |
+
*
|
| 332 |
+
* @return array
|
| 333 |
+
*/
|
| 334 |
+
public function mapAddressKeys($arrayResult)
|
| 335 |
+
{
|
| 336 |
+
$map = array();
|
| 337 |
+
$node = Mage::getConfig()->getNode(self::NODE_PATH_NOMAP_ADDRESS_KEYS);
|
| 338 |
+
$mapping = $node->asArray();
|
| 339 |
+
|
| 340 |
+
foreach ($mapping as $index => $keyvalue) {
|
| 341 |
+
$map[$keyvalue['key']] = $keyvalue['value'];
|
| 342 |
+
}
|
| 343 |
+
|
| 344 |
+
$myKeys = array_keys($map);
|
| 345 |
+
foreach ($arrayResult as $key => $arr) {
|
| 346 |
+
$arr->Label = $myKeys[$key];
|
| 347 |
+
}
|
| 348 |
+
return $arrayResult;
|
| 349 |
+
}
|
| 350 |
+
/**
|
| 351 |
+
* Prepare an empty mapper so that we have all the necessary params for
|
| 352 |
+
* the addresses like street_1, street_2, city, zip and country
|
| 353 |
+
*
|
| 354 |
+
* @return array
|
| 355 |
+
*/
|
| 356 |
+
protected function _prepareEmptyMapper()
|
| 357 |
+
{
|
| 358 |
+
$address = array();
|
| 359 |
+
$mapper = $this->getAddressFieldMapper();
|
| 360 |
+
|
| 361 |
+
foreach ($mapper as $value) {
|
| 362 |
+
$address[$value] = '';
|
| 363 |
+
}
|
| 364 |
+
|
| 365 |
+
return $address;
|
| 366 |
+
}
|
| 367 |
+
|
| 368 |
+
/**
|
| 369 |
+
* Map address values retrieved from API to Magento fields
|
| 370 |
+
* The country is needed to load regions
|
| 371 |
+
*
|
| 372 |
+
* @param stdClass $addressLines $addressLines
|
| 373 |
+
* @param strind $country $country
|
| 374 |
+
*
|
| 375 |
+
* @return array
|
| 376 |
+
*/
|
| 377 |
+
public function getMappedAddress($addressLines, $country)
|
| 378 |
+
{
|
| 379 |
+
$mapper = $this->getAddressFieldMapper();
|
| 380 |
+
$address = $this->_prepareEmptyMapper();
|
| 381 |
+
//we whether is there any special country
|
| 382 |
+
if (in_array($country, $this->getNotMappedCountries())) {
|
| 383 |
+
$addressLines = $this->mapAddressKeys($addressLines);
|
| 384 |
+
}
|
| 385 |
+
|
| 386 |
+
foreach ($addressLines as $line) {
|
| 387 |
+
if (isset($mapper[$line->Label]) && !empty($line->Line)) {
|
| 388 |
+
|
| 389 |
+
if (isset($mapper[$line->Label]) && $mapper[$line->Label] == 'region') {
|
| 390 |
+
// needs refactoring here
|
| 391 |
+
$region = Mage::getSingleton('directory/region');
|
| 392 |
+
$region->loadByName($line->Line, $country);
|
| 393 |
+
if (!$region->getId()) {
|
| 394 |
+
$region->loadByCode($line->Line, $country);
|
| 395 |
+
}
|
| 396 |
+
$regionId = $region->getId();
|
| 397 |
+
if (!empty($regionId) && isset($regionId)) {
|
| 398 |
+
$address[$mapper[$line->Label]] = $region->getId();
|
| 399 |
+
} else {
|
| 400 |
+
$address[$mapper[$line->Label]] = $line->Line;
|
| 401 |
+
}
|
| 402 |
+
|
| 403 |
+
} else {
|
| 404 |
+
if (isset($address[$mapper[$line->Label]])
|
| 405 |
+
&& !empty($address[$mapper[$line->Label]])) {
|
| 406 |
+
$address[$mapper[$line->Label]] .= ' ' . $line->Line;
|
| 407 |
+
} else {
|
| 408 |
+
$address[$mapper[$line->Label]] = $line->Line;
|
| 409 |
+
}
|
| 410 |
+
}
|
| 411 |
+
}
|
| 412 |
+
}
|
| 413 |
+
|
| 414 |
+
// if street_1 is empty, put the content of street_2 inside
|
| 415 |
+
if (isset($address['street_1']) && isset($address['street_2'])
|
| 416 |
+
&& empty($address['street_1']) && !empty($address['street_2'])) {
|
| 417 |
+
$address['street_1'] = $address['street_2'];
|
| 418 |
+
$address['street_2'] = '';
|
| 419 |
+
}
|
| 420 |
+
|
| 421 |
+
return $address;
|
| 422 |
+
}
|
| 423 |
+
|
| 424 |
+
/**
|
| 425 |
+
* Validate email from new platform
|
| 426 |
+
* https://api.experianmarketingservices.com/sync/queryresult/EmailValidate/1.0/
|
| 427 |
+
*
|
| 428 |
+
* @param string $email email
|
| 429 |
+
*
|
| 430 |
+
* @return void
|
| 431 |
+
*/
|
| 432 |
+
public function isEmailValid($email)
|
| 433 |
+
{
|
| 434 |
+
$url = $this->getEmailValidateUrl();
|
| 435 |
+
$license = $this->getEmailValidateLicense();
|
| 436 |
+
$arr = array('email' => $email);
|
| 437 |
+
$postFields = json_encode($arr);
|
| 438 |
+
|
| 439 |
+
$headers = array("POST / HTTP/1.1",
|
| 440 |
+
"Auth-Token:{$license}",
|
| 441 |
+
);
|
| 442 |
+
|
| 443 |
+
ob_start();
|
| 444 |
+
$ch = curl_init();
|
| 445 |
+
curl_setopt($ch, CURLOPT_URL, $url);
|
| 446 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
| 447 |
+
curl_setopt($ch, CURLOPT_POST, 1);
|
| 448 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
|
| 449 |
+
curl_setopt($ch, CURLOPT_VERBOSE, '1');
|
| 450 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
| 451 |
+
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
| 452 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
| 453 |
+
$result = curl_exec($ch);
|
| 454 |
+
if (!empty($result)) {
|
| 455 |
+
echo $result;
|
| 456 |
+
} else {
|
| 457 |
+
echo '{"Certainty":"verified", "Message":"Curl Error '.curl_error($ch).'"}';
|
| 458 |
+
}
|
| 459 |
+
curl_close($ch);
|
| 460 |
+
$content = ob_get_clean();
|
| 461 |
+
|
| 462 |
+
$this->log($content);
|
| 463 |
+
|
| 464 |
+
return $content;
|
| 465 |
+
}
|
| 466 |
+
}
|
app/code/community/Experian/Qas/Model/Observer.php
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Observer
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Model_Observer extends Mage_Core_Model_Abstract
|
| 11 |
+
{
|
| 12 |
+
/**
|
| 13 |
+
* Check authentification and Retrieve the available datasets for the user.
|
| 14 |
+
*/
|
| 15 |
+
public function confirmationCredentialsAndDs($observer)
|
| 16 |
+
{
|
| 17 |
+
$login = Mage::helper('experian_qas')->getApiUser();
|
| 18 |
+
$password = Mage::helper('experian_qas')->getApiPassword();
|
| 19 |
+
$api = Mage::getSingleton('experian_qas/qascall');
|
| 20 |
+
$api->getConfigDataSets();
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
/**
|
| 24 |
+
* Add missing_verification flag of customer address
|
| 25 |
+
*
|
| 26 |
+
* @param unknown $observer
|
| 27 |
+
*
|
| 28 |
+
* @return void
|
| 29 |
+
*/
|
| 30 |
+
public function flagCustomerAddress($observer)
|
| 31 |
+
{
|
| 32 |
+
if (Mage::helper('experian_qas')->isEnabled()) {
|
| 33 |
+
$customerAddress = $observer->getCustomerAddress();
|
| 34 |
+
$session = Mage::getSingleton('core/session');
|
| 35 |
+
$sessionKey = 'experian_missing_validation_' . Experian_Qas_Block_Verification::TYPE_ADDRESS;
|
| 36 |
+
|
| 37 |
+
$missingVerification = $session->getData($sessionKey);
|
| 38 |
+
$customerAddress->setData('missing_verification', $missingVerification);
|
| 39 |
+
$session->setData($sessionKey, false);
|
| 40 |
+
}
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
/**
|
| 44 |
+
* Add missing_verification flag of order address
|
| 45 |
+
*
|
| 46 |
+
* @param Varien_Event $observer
|
| 47 |
+
*
|
| 48 |
+
* @return void
|
| 49 |
+
*/
|
| 50 |
+
public function flagOrderAddress($observer)
|
| 51 |
+
{
|
| 52 |
+
if (Mage::helper('experian_qas')->isEnabled()) {
|
| 53 |
+
$session = Mage::getSingleton('core/session');
|
| 54 |
+
$sessionBillingKey = 'experian_missing_validation_' . Experian_Qas_Block_Verification::TYPE_BILLING;
|
| 55 |
+
$sessionShippingKey = 'experian_missing_validation_' . Experian_Qas_Block_Verification::TYPE_SHIPPING;
|
| 56 |
+
|
| 57 |
+
$event = $observer->getEvent();
|
| 58 |
+
$order = $event->getOrder();
|
| 59 |
+
|
| 60 |
+
$missingBillingVerification = $session->getData($sessionBillingKey);
|
| 61 |
+
$billingAddress = $order->getBillingAddress();
|
| 62 |
+
$billingAddress->setData('missing_verification', $missingBillingVerification);
|
| 63 |
+
$session->setData($sessionBillingKey, false);
|
| 64 |
+
|
| 65 |
+
$missingShippingVerification = $session->getData($sessionShippingKey);
|
| 66 |
+
$shippingAddress = $order->getShippingAddress();
|
| 67 |
+
$shippingAddress->setData('missing_verification', $missingShippingVerification);
|
| 68 |
+
$session->setData($sessionShippingKey, false);
|
| 69 |
+
}
|
| 70 |
+
}
|
| 71 |
+
}
|
app/code/community/Experian/Qas/Model/Qascall.php
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Api
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Model_Qascall
|
| 11 |
+
{
|
| 12 |
+
protected $_helper = NULL;
|
| 13 |
+
protected $_apiUser;
|
| 14 |
+
protected $_apiPassword;
|
| 15 |
+
protected $_wsdlName;
|
| 16 |
+
protected $_apiClient = NULL;
|
| 17 |
+
protected $_datasets = NULL;
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
public function __construct()
|
| 21 |
+
{
|
| 22 |
+
$helper = $this->_getHelper();
|
| 23 |
+
$this->_apiUser = $helper->getApiUser();
|
| 24 |
+
$this->_apiPassword = $helper->getApiPassword();
|
| 25 |
+
$this->_wsdlName = $helper->getWsdlName();
|
| 26 |
+
$this->_ondemandUrl = $helper->getOndemandUrl();
|
| 27 |
+
|
| 28 |
+
$options = array(
|
| 29 |
+
'trace' => 1,
|
| 30 |
+
'soap_version' => SOAP_1_1,
|
| 31 |
+
'encoding' => 'UTF-8',
|
| 32 |
+
'cache_wsdl' => WSDL_CACHE_BOTH
|
| 33 |
+
);
|
| 34 |
+
//Getting the base dir of our wsdl located in the etc of experian module
|
| 35 |
+
$baseWsdlFile = Mage::getConfig()->getModuleDir('etc', "Experian_Qas") . DS . $this->_wsdlName;
|
| 36 |
+
try {
|
| 37 |
+
$this->_apiClient = new SoapClient($baseWsdlFile, $options);
|
| 38 |
+
$this->_setAuthHeader();
|
| 39 |
+
} catch (SoapFault $e) {
|
| 40 |
+
$helper->log($e->getMessage());
|
| 41 |
+
}
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
/**
|
| 45 |
+
* Set header authentication in Soap Client
|
| 46 |
+
*/
|
| 47 |
+
protected function _setAuthHeader()
|
| 48 |
+
{
|
| 49 |
+
$params = array(
|
| 50 |
+
'Security'=>'',
|
| 51 |
+
'QAAuthentication' => array(
|
| 52 |
+
'Username'=>$this->_apiUser,
|
| 53 |
+
'Password'=>$this->_apiPassword
|
| 54 |
+
)
|
| 55 |
+
);
|
| 56 |
+
|
| 57 |
+
$authheader = new SoapHeader(
|
| 58 |
+
$this->_ondemandUrl,
|
| 59 |
+
'QAQueryHeader',
|
| 60 |
+
$params
|
| 61 |
+
);
|
| 62 |
+
|
| 63 |
+
$this->_apiClient->__setSoapHeaders($authheader);
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
/**
|
| 67 |
+
* Retrieve Experian Qas Helper
|
| 68 |
+
*
|
| 69 |
+
* @return Experian_Qas_Helper_Data
|
| 70 |
+
*/
|
| 71 |
+
protected function _getHelper()
|
| 72 |
+
{
|
| 73 |
+
if (is_null($this->_helper)) {
|
| 74 |
+
$this->_helper = Mage::helper('experian_qas');
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
return $this->_helper;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
/**
|
| 81 |
+
* Retrieve the instanciated API SOAP Client
|
| 82 |
+
*
|
| 83 |
+
* @return type
|
| 84 |
+
*/
|
| 85 |
+
public function getApiClient()
|
| 86 |
+
{
|
| 87 |
+
return $this->_apiClient;
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
/**
|
| 91 |
+
* Retrieve the available datasets
|
| 92 |
+
*
|
| 93 |
+
* @return array
|
| 94 |
+
*/
|
| 95 |
+
public function getDataSets($displayError = true)
|
| 96 |
+
{
|
| 97 |
+
if (is_null($this->_datasets)) {
|
| 98 |
+
try {
|
| 99 |
+
$this->_datasets = $this->_apiClient->DoGetData()->DataSet;
|
| 100 |
+
} catch (Exception $e) {
|
| 101 |
+
if ($displayError) {
|
| 102 |
+
Mage::getSingleton('core/session')->addError($e->getMessage());
|
| 103 |
+
}
|
| 104 |
+
$this->_helper->log($e->getMessage());
|
| 105 |
+
$this->_datasets = array();
|
| 106 |
+
}
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
return $this->_datasets;
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
+
/**
|
| 113 |
+
* Check if the address search can be made on a certain dataset
|
| 114 |
+
*
|
| 115 |
+
* @param array $args
|
| 116 |
+
* @return boolean
|
| 117 |
+
*/
|
| 118 |
+
public function getCanSearch($args)
|
| 119 |
+
{
|
| 120 |
+
try {
|
| 121 |
+
return $this->_apiClient->DoCanSearch($args)->IsOk;
|
| 122 |
+
} catch (SoapFault $e) {
|
| 123 |
+
$this->_helper->log($e->getMessage());
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
return false;
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
/**
|
| 130 |
+
* Retrieve the list of addresses returned by the API
|
| 131 |
+
*
|
| 132 |
+
* @param array $args
|
| 133 |
+
* @return stdClass Object QAPicklist list of addresses
|
| 134 |
+
*/
|
| 135 |
+
public function getDoSearch($args)
|
| 136 |
+
{
|
| 137 |
+
return $this->_apiClient->DoSearch($args);
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
/**
|
| 141 |
+
* Format the address basing on the dataset or the country
|
| 142 |
+
*
|
| 143 |
+
* @param array $addressLines
|
| 144 |
+
* @param string $country
|
| 145 |
+
* @return array
|
| 146 |
+
*/
|
| 147 |
+
public function getMappedAddress($addressLines, $country = NULL)
|
| 148 |
+
{
|
| 149 |
+
return $this->_helper->getMappedAddress($addressLines, $country);
|
| 150 |
+
}
|
| 151 |
+
|
| 152 |
+
/**
|
| 153 |
+
* Retrieved the normalized address with the API using a moniker and a layout
|
| 154 |
+
*
|
| 155 |
+
* @param string $moniker
|
| 156 |
+
* @param string $layout
|
| 157 |
+
* @return stdClass
|
| 158 |
+
*/
|
| 159 |
+
public function getNormalizedAddress($moniker, $layout = NULL)
|
| 160 |
+
{
|
| 161 |
+
$address = NULL;
|
| 162 |
+
$args = array(
|
| 163 |
+
'Moniker' => $moniker,
|
| 164 |
+
'Layout' => $layout
|
| 165 |
+
);
|
| 166 |
+
|
| 167 |
+
try {
|
| 168 |
+
$address = $this->_apiClient->DoGetAddress($args);
|
| 169 |
+
} catch (SoapFault $e) {
|
| 170 |
+
$this->_helper->log($e->getMessage());
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
return $address;
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
/**
|
| 177 |
+
* Retrieve all the available address layouts for a certain dataset/country
|
| 178 |
+
*
|
| 179 |
+
* @param string $dataset
|
| 180 |
+
* @return stdClass
|
| 181 |
+
*/
|
| 182 |
+
public function getAddressLayouts($dataset)
|
| 183 |
+
{
|
| 184 |
+
$layouts = NULL;
|
| 185 |
+
$args = array(
|
| 186 |
+
'Country' => $dataset
|
| 187 |
+
);
|
| 188 |
+
|
| 189 |
+
try {
|
| 190 |
+
$layouts = $this->_apiClient->DoGetLayouts($args);
|
| 191 |
+
} catch (SoapFault $e) {
|
| 192 |
+
$this->_helper->log($e->getMessage());
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
return $layouts;
|
| 196 |
+
}
|
| 197 |
+
/**
|
| 198 |
+
* Check authentification and Retrieve the available datasets to configuration page
|
| 199 |
+
*/
|
| 200 |
+
public function getConfigDataSets()
|
| 201 |
+
{
|
| 202 |
+
|
| 203 |
+
if (is_null($this->_datasets)) {
|
| 204 |
+
try {
|
| 205 |
+
$this->_datasets = $this->_apiClient->DoGetData()->DataSet;
|
| 206 |
+
Mage::getSingleton('core/session')->addNotice('Allowed datasets :');
|
| 207 |
+
foreach($this->_datasets as $ds)
|
| 208 |
+
{
|
| 209 |
+
Mage::getSingleton('core/session')->addNotice($ds->ID.': '.$ds->Name);
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
} catch (Exception $e) {
|
| 213 |
+
Mage::getSingleton('core/session')->addError($e->getMessage());
|
| 214 |
+
}
|
| 215 |
+
}
|
| 216 |
+
}
|
| 217 |
+
}
|
app/code/community/Experian/Qas/Model/System/Config/Source/Engine.php
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Engine type source
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Model_System_Config_Source_Engine
|
| 11 |
+
extends Mage_Eav_Model_Entity_Attribute_Source_Config
|
| 12 |
+
{
|
| 13 |
+
public function __construct()
|
| 14 |
+
{
|
| 15 |
+
$this->_configNodePath = 'global/experian_qas/engine/type';
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
/**
|
| 19 |
+
* Retrieve Search Engine type options
|
| 20 |
+
*
|
| 21 |
+
* @return array
|
| 22 |
+
*/
|
| 23 |
+
public function toOptionArray()
|
| 24 |
+
{
|
| 25 |
+
if (!$this->_options) {
|
| 26 |
+
$this->_options = parent::getAllOptions();
|
| 27 |
+
array_unshift($this->_options, array('value' => '', 'label' => Mage::helper('experian_qas')->__('-- Please Select --')));
|
| 28 |
+
}
|
| 29 |
+
return $this->_options;
|
| 30 |
+
}
|
| 31 |
+
}
|
app/code/community/Experian/Qas/Model/System/Config/Source/SpecialEngine.php
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Engine type source
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_Model_System_Config_Source_SpecialEngine
|
| 11 |
+
extends Experian_Qas_Model_System_Config_Source_Engine
|
| 12 |
+
{
|
| 13 |
+
public function __construct()
|
| 14 |
+
{
|
| 15 |
+
$this->_configNodePath = 'global/experian_qas/specialengine/type';
|
| 16 |
+
}
|
| 17 |
+
}
|
app/code/community/Experian/Qas/controllers/ProcessController.php
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Experian Qas Controller
|
| 4 |
+
*
|
| 5 |
+
* @category Experian
|
| 6 |
+
* @package Experian_Qas
|
| 7 |
+
* @copyright 2012 Experian
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
class Experian_Qas_ProcessController extends Mage_Core_Controller_Front_Action
|
| 11 |
+
{
|
| 12 |
+
const CACHE_INTUITIVE_TAG = 'EXPERIAN_INTUITIVE';
|
| 13 |
+
const CACHE_INTUITIVE_LIFETIME = 3600;
|
| 14 |
+
|
| 15 |
+
/**
|
| 16 |
+
* Call the Intuitive Gngine
|
| 17 |
+
*
|
| 18 |
+
* @return string
|
| 19 |
+
*/
|
| 20 |
+
public function intuitiveEngineAction()
|
| 21 |
+
{
|
| 22 |
+
$helper = Mage::helper('experian_qas');
|
| 23 |
+
$isIntuitiveEnabled = $helper->isIntuitiveEnabled();
|
| 24 |
+
$searchAddress = $this->getRequest()->getParam(Experian_Qas_Helper_Data::QUERY_PARAM, false);
|
| 25 |
+
$country = $this->getRequest()->getParam(Experian_Qas_Helper_Data::QUERY_COUNTRY, false);
|
| 26 |
+
$api = Mage::getSingleton('experian_qas/qascall');
|
| 27 |
+
|
| 28 |
+
if (($searchAddress == false) || ($isIntuitiveEnabled == false) || ($country != 'FR')) {
|
| 29 |
+
$message = $helper->__('Intuitive Engine is disabled for all Datasets except France (FRI).');
|
| 30 |
+
$helper->log($message);
|
| 31 |
+
return;
|
| 32 |
+
}
|
| 33 |
+
|
| 34 |
+
// Check if we need use FRI or FR3
|
| 35 |
+
$datasetAvailable = $helper->getCountryAvailable();
|
| 36 |
+
$countryDataset = Experian_Qas_Helper_Data::INTUITIVE_DATASET_FRANCE;
|
| 37 |
+
if (isset($datasetAvailable[Experian_Qas_Helper_Data::INTUITIVE_DATASET_FRANCE_BIS])) {
|
| 38 |
+
$countryDataset = Experian_Qas_Helper_Data::INTUITIVE_DATASET_FRANCE_BIS;
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
$args = array(
|
| 42 |
+
'Country' => $countryDataset,
|
| 43 |
+
'Search' => $searchAddress, //get all the address info @todo
|
| 44 |
+
'Engine' => Experian_Qas_Helper_Data::INTUITIVE_ENGINE_CODE,
|
| 45 |
+
'Layout' => $helper->getAddressLayout()
|
| 46 |
+
);
|
| 47 |
+
|
| 48 |
+
$html = '';
|
| 49 |
+
|
| 50 |
+
if ($api->getCanSearch($args) == true) {
|
| 51 |
+
$cacheKey = self::CACHE_INTUITIVE_TAG . '_' . md5(serialize($args));
|
| 52 |
+
|
| 53 |
+
if ($helper->isCacheEnabled() &&
|
| 54 |
+
false !== ($result = Mage::app()->getCache()->load($cacheKey))) {
|
| 55 |
+
$html = $result;
|
| 56 |
+
} else {
|
| 57 |
+
$qaPicklist = $api->getDoSearch($args)->QAPicklist;
|
| 58 |
+
|
| 59 |
+
if ($qaPicklist->Total > 0) {
|
| 60 |
+
$picklistEntries = $qaPicklist->PicklistEntry;
|
| 61 |
+
$html = $this->getLayout()->createBlock('experian_qas/autocomplete')
|
| 62 |
+
->setPicklistEntries($picklistEntries)
|
| 63 |
+
->toHtml();
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
// Cache the result
|
| 67 |
+
if ($helper->isCacheEnabled()) {
|
| 68 |
+
Mage::app()->getCache()->save(
|
| 69 |
+
$html,
|
| 70 |
+
$cacheKey,
|
| 71 |
+
array(self::CACHE_INTUITIVE_TAG),
|
| 72 |
+
self::CACHE_INTUITIVE_LIFETIME
|
| 73 |
+
);
|
| 74 |
+
}
|
| 75 |
+
}
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
return $this->getResponse()->setBody($html);
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
/**
|
| 82 |
+
* Retrieve the address using the moniker and send it normalized
|
| 83 |
+
*
|
| 84 |
+
* @return string
|
| 85 |
+
*/
|
| 86 |
+
public function normalizeAddressAction()
|
| 87 |
+
{
|
| 88 |
+
$mappedAddress = array();
|
| 89 |
+
$moniker = $this->getRequest()->getParam(Experian_Qas_Helper_Data::QUERY_MONIKER, false);
|
| 90 |
+
// find sth better for these below
|
| 91 |
+
$country = substr($moniker, 0, 2);
|
| 92 |
+
$dataset = substr($moniker, 0, 3);
|
| 93 |
+
|
| 94 |
+
$api = Mage::getSingleton('experian_qas/qascall');
|
| 95 |
+
$layout = Mage::helper('experian_qas')->getAddressLayout();
|
| 96 |
+
|
| 97 |
+
$normalizedAddress = $api->getNormalizedAddress($moniker, $layout);
|
| 98 |
+
if (isset($normalizedAddress->QAAddress->AddressLine)) {
|
| 99 |
+
$mappedAddress = $api->getMappedAddress($normalizedAddress->QAAddress->AddressLine, $country);
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
return $this->getResponse()
|
| 103 |
+
->setBody(Mage::helper('core')->jsonEncode($mappedAddress));
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
/**
|
| 107 |
+
* Test the validity of an email
|
| 108 |
+
*
|
| 109 |
+
* @return string
|
| 110 |
+
*/
|
| 111 |
+
public function validateEmailAction()
|
| 112 |
+
{
|
| 113 |
+
$content = '{"Certainty":"unknown", "Message":"OK"}';
|
| 114 |
+
$helper = Mage::helper('experian_qas');
|
| 115 |
+
|
| 116 |
+
if ($helper->isEmailValidateEnabled()) {
|
| 117 |
+
$email = $this->getRequest()->getParam('email', false);
|
| 118 |
+
if ($email != false) {
|
| 119 |
+
$content = $helper->isEmailValid($email);
|
| 120 |
+
}
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
return $this->getResponse()->setBody($content);
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
/**
|
| 127 |
+
* Prepare the query string with address parameters
|
| 128 |
+
*
|
| 129 |
+
* @return string
|
| 130 |
+
*/
|
| 131 |
+
protected function _getAddressParams()
|
| 132 |
+
{
|
| 133 |
+
$params = $this->getRequest()->getParams();
|
| 134 |
+
$address = new Varien_Object($params);
|
| 135 |
+
|
| 136 |
+
if ($address->getBilling()) {
|
| 137 |
+
$address = $address->getBilling();
|
| 138 |
+
} elseif ($address->getShipping()) {
|
| 139 |
+
$address = $address->getShipping();
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
return Mage::helper('experian_qas')->getQueryString($address);
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
/**
|
| 146 |
+
* Retrieve the country code from the request (form)
|
| 147 |
+
*
|
| 148 |
+
* @return string
|
| 149 |
+
*/
|
| 150 |
+
protected function _getCountryId()
|
| 151 |
+
{
|
| 152 |
+
$params = $this->getRequest()->getParams();
|
| 153 |
+
$address = new Varien_Object($params);
|
| 154 |
+
|
| 155 |
+
if ($address->getBilling()) {
|
| 156 |
+
$address = new Varien_Object($address->getBilling());
|
| 157 |
+
} elseif ($address->getShipping()) {
|
| 158 |
+
$address = new Varien_Object($address->getShipping());
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
return $address->getCountryId();
|
| 162 |
+
}
|
| 163 |
+
|
| 164 |
+
/**
|
| 165 |
+
* Make the request to retrieve addresses from the API
|
| 166 |
+
*
|
| 167 |
+
* @return string
|
| 168 |
+
*/
|
| 169 |
+
public function addressSearchEngineAction()
|
| 170 |
+
{
|
| 171 |
+
$html = '';
|
| 172 |
+
$helper = Mage::helper('experian_qas');
|
| 173 |
+
$api = Mage::getSingleton('experian_qas/qascall');
|
| 174 |
+
$country = $this->_getCountryId();
|
| 175 |
+
$edit = $this->getRequest()->getParam('edit');
|
| 176 |
+
$dataset = $helper->getCountryDataset($country);
|
| 177 |
+
$session = Mage::getSingleton('core/session');
|
| 178 |
+
$sessionMissingValidationKey = 'experian_missing_validation_';
|
| 179 |
+
$searchEngine = $helper->getSearchEngine($dataset);
|
| 180 |
+
if (!empty($searchEngine)) {
|
| 181 |
+
$args = array(
|
| 182 |
+
'Country' => $dataset,
|
| 183 |
+
'Search' => $this->_getAddressParams(),
|
| 184 |
+
'Engine' => $searchEngine,
|
| 185 |
+
'Layout' => $helper->getAddressLayout()
|
| 186 |
+
);
|
| 187 |
+
|
| 188 |
+
if ($api->getCanSearch($args) == true) {
|
| 189 |
+
if ($searchEngine == Experian_Qas_Helper_Data::VERIFICATION_ENGINE_CODE) {
|
| 190 |
+
$result = $api->getDoSearch($args);
|
| 191 |
+
$html = $this->getLayout()->createBlock('experian_qas/verification')
|
| 192 |
+
->setResult($result)
|
| 193 |
+
->setCountryId($country)
|
| 194 |
+
->setEdit($edit)
|
| 195 |
+
->toHtml();
|
| 196 |
+
$session->setData($sessionMissingValidationKey.$edit, false);
|
| 197 |
+
} elseif ($searchEngine == Experian_Qas_Helper_Data::SINGLELINE_ENGINE_CODE) {
|
| 198 |
+
$result = $api->getDoSearch($args);
|
| 199 |
+
$picklistEntries = array();
|
| 200 |
+
if (isset($result->QAPicklist) && isset($result->QAPicklist->PicklistEntry)) {
|
| 201 |
+
$picklistEntries = $api->getDoSearch($args)->QAPicklist->PicklistEntry;
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
+
$html = $this->getLayout()->createBlock('experian_qas/interaction')
|
| 205 |
+
->setPicklistEntries($picklistEntries)
|
| 206 |
+
->toHtml();
|
| 207 |
+
$session->setData($sessionMissingValidationKey.$edit, false);
|
| 208 |
+
}
|
| 209 |
+
} else {
|
| 210 |
+
// Service not available
|
| 211 |
+
$session->setData($sessionMissingValidationKey.$edit, true);
|
| 212 |
+
}
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
return $this->getResponse()->setBody($html);
|
| 216 |
+
}
|
| 217 |
+
}
|
app/code/community/Experian/Qas/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* @category Experian
|
| 5 |
+
* @package Experian_Qas
|
| 6 |
+
* @copyright Experian 2012
|
| 7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 8 |
+
*/
|
| 9 |
+
-->
|
| 10 |
+
<config>
|
| 11 |
+
<acl>
|
| 12 |
+
<resources>
|
| 13 |
+
<admin>
|
| 14 |
+
<children>
|
| 15 |
+
<system>
|
| 16 |
+
<children>
|
| 17 |
+
<config>
|
| 18 |
+
<children>
|
| 19 |
+
<qas_address_verifier translate="title" module="experian_qas">
|
| 20 |
+
<title>QAS - General</title>
|
| 21 |
+
</qas_address_verifier>
|
| 22 |
+
</children>
|
| 23 |
+
</config>
|
| 24 |
+
</children>
|
| 25 |
+
</system>
|
| 26 |
+
</children>
|
| 27 |
+
</admin>
|
| 28 |
+
</resources>
|
| 29 |
+
</acl>
|
| 30 |
+
</config>
|
app/code/community/Experian/Qas/etc/config.xml
ADDED
|
@@ -0,0 +1,414 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!-- /** * @category Experian * @package Experian_Qas * @copyright Experian
|
| 3 |
+
2012 * @license http://opensource.org/licenses/osl-3.0.php Open Software
|
| 4 |
+
License (OSL 3.0) */ -->
|
| 5 |
+
<config>
|
| 6 |
+
<modules>
|
| 7 |
+
<Experian_Qas>
|
| 8 |
+
<version>0.0.1</version>
|
| 9 |
+
</Experian_Qas>
|
| 10 |
+
</modules>
|
| 11 |
+
<global>
|
| 12 |
+
<ignoredModules>
|
| 13 |
+
<entities>
|
| 14 |
+
<qas />
|
| 15 |
+
</entities>
|
| 16 |
+
</ignoredModules>
|
| 17 |
+
<models>
|
| 18 |
+
<experian_qas>
|
| 19 |
+
<class>Experian_Qas_Model</class>
|
| 20 |
+
</experian_qas>
|
| 21 |
+
</models>
|
| 22 |
+
<resources>
|
| 23 |
+
<qas_setup>
|
| 24 |
+
<setup>
|
| 25 |
+
<module>Experian_Qas</module>
|
| 26 |
+
<class>Mage_Customer_Model_Entity_Setup</class>
|
| 27 |
+
</setup>
|
| 28 |
+
<connection>
|
| 29 |
+
<use>core_setup</use>
|
| 30 |
+
</connection>
|
| 31 |
+
</qas_setup>
|
| 32 |
+
</resources>
|
| 33 |
+
<helpers>
|
| 34 |
+
<experian_qas>
|
| 35 |
+
<class>Experian_Qas_Helper</class>
|
| 36 |
+
</experian_qas>
|
| 37 |
+
</helpers>
|
| 38 |
+
<blocks>
|
| 39 |
+
<experian_qas>
|
| 40 |
+
<class>Experian_Qas_Block</class>
|
| 41 |
+
</experian_qas>
|
| 42 |
+
</blocks>
|
| 43 |
+
<events>
|
| 44 |
+
<admin_system_config_changed_section_qas_address_verifier>
|
| 45 |
+
<observers>
|
| 46 |
+
<experian_qas>
|
| 47 |
+
<type>singleton</type>
|
| 48 |
+
<class>experian_qas/observer</class>
|
| 49 |
+
<method>confirmationCredentialsAndDs</method>
|
| 50 |
+
</experian_qas>
|
| 51 |
+
</observers>
|
| 52 |
+
</admin_system_config_changed_section_qas_address_verifier>
|
| 53 |
+
|
| 54 |
+
<customer_address_save_before>
|
| 55 |
+
<observers>
|
| 56 |
+
<experian_qas_flag_customer_address>
|
| 57 |
+
<type>singleton</type>
|
| 58 |
+
<class>experian_qas/observer</class>
|
| 59 |
+
<method>flagCustomerAddress</method>
|
| 60 |
+
</experian_qas_flag_customer_address>
|
| 61 |
+
</observers>
|
| 62 |
+
</customer_address_save_before>
|
| 63 |
+
|
| 64 |
+
<checkout_type_onepage_save_order>
|
| 65 |
+
<observers>
|
| 66 |
+
<experian_qas_flag_order_address>
|
| 67 |
+
<type>model</type>
|
| 68 |
+
<class>experian_qas/observer</class>
|
| 69 |
+
<method>flagOrderAddress</method>
|
| 70 |
+
</experian_qas_flag_order_address>
|
| 71 |
+
</observers>
|
| 72 |
+
</checkout_type_onepage_save_order>
|
| 73 |
+
</events>
|
| 74 |
+
|
| 75 |
+
<!-- Search Engine type options -->
|
| 76 |
+
<experian_qas>
|
| 77 |
+
<engine>
|
| 78 |
+
<type>
|
| 79 |
+
<verification translate="label">
|
| 80 |
+
<value>Verification</value>
|
| 81 |
+
<label>Verification</label>
|
| 82 |
+
</verification>
|
| 83 |
+
<singleline translate="label">
|
| 84 |
+
<value>Singleline</value>
|
| 85 |
+
<label>Singleline</label>
|
| 86 |
+
</singleline>
|
| 87 |
+
</type>
|
| 88 |
+
</engine>
|
| 89 |
+
<specialengine>
|
| 90 |
+
<type>
|
| 91 |
+
<singleline translate="label">
|
| 92 |
+
<value>Singleline</value>
|
| 93 |
+
<label>Singleline</label>
|
| 94 |
+
</singleline>
|
| 95 |
+
</type>
|
| 96 |
+
</specialengine>
|
| 97 |
+
</experian_qas>
|
| 98 |
+
|
| 99 |
+
<mapping>
|
| 100 |
+
<address>
|
| 101 |
+
<!-- UK -->
|
| 102 |
+
<MAGENTO2012_organisation>
|
| 103 |
+
<key><![CDATA[Organisation]]></key>
|
| 104 |
+
<value><![CDATA[street_2]]></value>
|
| 105 |
+
</MAGENTO2012_organisation>
|
| 106 |
+
|
| 107 |
+
<!-- US -->
|
| 108 |
+
<MAGENTO2012_building_firm_name>
|
| 109 |
+
<key><![CDATA[Building/firm name]]></key>
|
| 110 |
+
<value><![CDATA[street_2]]></value>
|
| 111 |
+
</MAGENTO2012_building_firm_name>
|
| 112 |
+
<MAGENTO2012_organisation>
|
| 113 |
+
<key><![CDATA[County]]></key>
|
| 114 |
+
<value><![CDATA[street_2]]></value>
|
| 115 |
+
</MAGENTO2012_organisation>
|
| 116 |
+
|
| 117 |
+
<!-- All -->
|
| 118 |
+
<MAGENTO2012_street_1>
|
| 119 |
+
<key><![CDATA[Street 1]]></key>
|
| 120 |
+
<value><![CDATA[street_1]]></value>
|
| 121 |
+
</MAGENTO2012_street_1>
|
| 122 |
+
<MAGENTO2012_street_2>
|
| 123 |
+
<key><![CDATA[Street 2]]></key>
|
| 124 |
+
<value><![CDATA[street_2]]></value>
|
| 125 |
+
</MAGENTO2012_street_2>
|
| 126 |
+
<MAGENTO2012_street_3>
|
| 127 |
+
<key><![CDATA[Street 3]]></key>
|
| 128 |
+
<value><![CDATA[street_2]]></value>
|
| 129 |
+
</MAGENTO2012_street_3>
|
| 130 |
+
<MAGENTO2012_city>
|
| 131 |
+
<key><![CDATA[City]]></key>
|
| 132 |
+
<value><![CDATA[city]]></value>
|
| 133 |
+
</MAGENTO2012_city>
|
| 134 |
+
<MAGENTO2012_state_province>
|
| 135 |
+
<key><![CDATA[State/Province]]></key>
|
| 136 |
+
<value><![CDATA[region]]></value>
|
| 137 |
+
</MAGENTO2012_state_province>
|
| 138 |
+
<MAGENTO2012_zip_postal_code>
|
| 139 |
+
<key><![CDATA[ZIP/Postal Code]]></key>
|
| 140 |
+
<value><![CDATA[zip]]></value>
|
| 141 |
+
</MAGENTO2012_zip_postal_code>
|
| 142 |
+
<MAGENTO2012_country_region>
|
| 143 |
+
<key><![CDATA[Country/Region]]></key>
|
| 144 |
+
<value><![CDATA[country]]></value>
|
| 145 |
+
</MAGENTO2012_country_region>
|
| 146 |
+
|
| 147 |
+
<!-- key is not the same 'c' lower letter -->
|
| 148 |
+
<TMP_ESP_MAGENTO2012_zip_postal_code>
|
| 149 |
+
<key><![CDATA[ZIP/Postal code]]></key>
|
| 150 |
+
<value><![CDATA[zip]]></value>
|
| 151 |
+
</TMP_ESP_MAGENTO2012_zip_postal_code>
|
| 152 |
+
|
| 153 |
+
</address>
|
| 154 |
+
<dataset>
|
| 155 |
+
<AW><![CDATA[ABW]]></AW>
|
| 156 |
+
<AF><![CDATA[AFG]]></AF>
|
| 157 |
+
<AO><![CDATA[AGO]]></AO>
|
| 158 |
+
<AL><![CDATA[ALB]]></AL>
|
| 159 |
+
<AN><![CDATA[ANT]]></AN>
|
| 160 |
+
<AE><![CDATA[ARE]]></AE>
|
| 161 |
+
<AR><![CDATA[ARG]]></AR>
|
| 162 |
+
<AM><![CDATA[ARM]]></AM>
|
| 163 |
+
<AG><![CDATA[ATG]]></AG>
|
| 164 |
+
<AU><![CDATA[AUS]]></AU>
|
| 165 |
+
<AT><![CDATA[AUT]]></AT>
|
| 166 |
+
<AZ><![CDATA[AZE]]></AZ>
|
| 167 |
+
<BI><![CDATA[BDI]]></BI>
|
| 168 |
+
<BE><![CDATA[BEL]]></BE>
|
| 169 |
+
<BJ><![CDATA[BEN]]></BJ>
|
| 170 |
+
<BF><![CDATA[BFA]]></BF>
|
| 171 |
+
<BD><![CDATA[BGD]]></BD>
|
| 172 |
+
<BG><![CDATA[BGR]]></BG>
|
| 173 |
+
<BH><![CDATA[BHR]]></BH>
|
| 174 |
+
<BS><![CDATA[BHS]]></BS>
|
| 175 |
+
<BA><![CDATA[BIH]]></BA>
|
| 176 |
+
<BY><![CDATA[BLR]]></BY>
|
| 177 |
+
<BZ><![CDATA[BLZ]]></BZ>
|
| 178 |
+
<BM><![CDATA[BMU]]></BM>
|
| 179 |
+
<BO><![CDATA[BOL]]></BO>
|
| 180 |
+
<BR><![CDATA[BRA]]></BR>
|
| 181 |
+
<BB><![CDATA[BRB]]></BB>
|
| 182 |
+
<BN><![CDATA[BRN]]></BN>
|
| 183 |
+
<BT><![CDATA[BTN]]></BT>
|
| 184 |
+
<BW><![CDATA[BWA]]></BW>
|
| 185 |
+
<CF><![CDATA[CAF]]></CF>
|
| 186 |
+
<CA><![CDATA[CAN]]></CA>
|
| 187 |
+
<CH><![CDATA[CHE]]></CH>
|
| 188 |
+
<CL><![CDATA[CHL]]></CL>
|
| 189 |
+
<CN><![CDATA[CHN]]></CN>
|
| 190 |
+
<CI><![CDATA[CIV]]></CI>
|
| 191 |
+
<CM><![CDATA[CMR]]></CM>
|
| 192 |
+
<CD><![CDATA[COD]]></CD>
|
| 193 |
+
<CG><![CDATA[COG]]></CG>
|
| 194 |
+
<CO><![CDATA[COL]]></CO>
|
| 195 |
+
<KM><![CDATA[COM]]></KM>
|
| 196 |
+
<CV><![CDATA[CPV]]></CV>
|
| 197 |
+
<CR><![CDATA[CRI]]></CR>
|
| 198 |
+
<CU><![CDATA[CUB]]></CU>
|
| 199 |
+
<KY><![CDATA[CYM]]></KY>
|
| 200 |
+
<CY><![CDATA[CYP]]></CY>
|
| 201 |
+
<CZ><![CDATA[CZE]]></CZ>
|
| 202 |
+
<DE><![CDATA[DEU]]></DE>
|
| 203 |
+
<DJ><![CDATA[DJI]]></DJ>
|
| 204 |
+
<DM><![CDATA[DMA]]></DM>
|
| 205 |
+
<DK><![CDATA[DNK]]></DK>
|
| 206 |
+
<DO><![CDATA[DOM]]></DO>
|
| 207 |
+
<DZ><![CDATA[DZA]]></DZ>
|
| 208 |
+
<EC><![CDATA[ECU]]></EC>
|
| 209 |
+
<EG><![CDATA[EGY]]></EG>
|
| 210 |
+
<ER><![CDATA[ERI]]></ER>
|
| 211 |
+
<EH><![CDATA[ESH]]></EH>
|
| 212 |
+
<ES><![CDATA[ESP]]></ES>
|
| 213 |
+
<EE><![CDATA[EST]]></EE>
|
| 214 |
+
<ET><![CDATA[ETH]]></ET>
|
| 215 |
+
<FI><![CDATA[FIN]]></FI>
|
| 216 |
+
<FJ><![CDATA[FJI]]></FJ>
|
| 217 |
+
<FR><![CDATA[FRX]]></FR>
|
| 218 |
+
<GA><![CDATA[GAB]]></GA>
|
| 219 |
+
<GB><![CDATA[GBR]]></GB>
|
| 220 |
+
<GE><![CDATA[GEO]]></GE>
|
| 221 |
+
<GH><![CDATA[GHA]]></GH>
|
| 222 |
+
<GN><![CDATA[GIN]]></GN>
|
| 223 |
+
<GM><![CDATA[GMB]]></GM>
|
| 224 |
+
<GW><![CDATA[GNB]]></GW>
|
| 225 |
+
<GQ><![CDATA[GNQ]]></GQ>
|
| 226 |
+
<GR><![CDATA[GRC]]></GR>
|
| 227 |
+
<GD><![CDATA[GRD]]></GD>
|
| 228 |
+
<GT><![CDATA[GTM]]></GT>
|
| 229 |
+
<GY><![CDATA[GUY]]></GY>
|
| 230 |
+
<HK><![CDATA[HKG]]></HK>
|
| 231 |
+
<HN><![CDATA[HND]]></HN>
|
| 232 |
+
<HR><![CDATA[HRV]]></HR>
|
| 233 |
+
<HT><![CDATA[HTI]]></HT>
|
| 234 |
+
<HU><![CDATA[HUN]]></HU>
|
| 235 |
+
<ID><![CDATA[IDN]]></ID>
|
| 236 |
+
<IN><![CDATA[IND]]></IN>
|
| 237 |
+
<IE><![CDATA[IRL]]></IE>
|
| 238 |
+
<IR><![CDATA[IRN]]></IR>
|
| 239 |
+
<IQ><![CDATA[IRQ]]></IQ>
|
| 240 |
+
<IS><![CDATA[ISL]]></IS>
|
| 241 |
+
<IL><![CDATA[ISR]]></IL>
|
| 242 |
+
<IT><![CDATA[ITA]]></IT>
|
| 243 |
+
<JM><![CDATA[JAM]]></JM>
|
| 244 |
+
<JO><![CDATA[JOR]]></JO>
|
| 245 |
+
<JP><![CDATA[JPN]]></JP>
|
| 246 |
+
<KZ><![CDATA[KAZ]]></KZ>
|
| 247 |
+
<KE><![CDATA[KEN]]></KE>
|
| 248 |
+
<KG><![CDATA[KGZ]]></KG>
|
| 249 |
+
<KH><![CDATA[KHM]]></KH>
|
| 250 |
+
<KI><![CDATA[KIR]]></KI>
|
| 251 |
+
<KN><![CDATA[KNA]]></KN>
|
| 252 |
+
<KR><![CDATA[KOR]]></KR>
|
| 253 |
+
<KW><![CDATA[KWT]]></KW>
|
| 254 |
+
<LA><![CDATA[LAO]]></LA>
|
| 255 |
+
<LB><![CDATA[LBN]]></LB>
|
| 256 |
+
<LR><![CDATA[LBR]]></LR>
|
| 257 |
+
<LY><![CDATA[LBY]]></LY>
|
| 258 |
+
<LI><![CDATA[LIE]]></LI>
|
| 259 |
+
<LK><![CDATA[LKA]]></LK>
|
| 260 |
+
<LS><![CDATA[LSO]]></LS>
|
| 261 |
+
<LT><![CDATA[LTU]]></LT>
|
| 262 |
+
<LU><![CDATA[LUX]]></LU>
|
| 263 |
+
<LV><![CDATA[LVA]]></LV>
|
| 264 |
+
<MA><![CDATA[MAR]]></MA>
|
| 265 |
+
<MD><![CDATA[MDA]]></MD>
|
| 266 |
+
<MG><![CDATA[MDG]]></MG>
|
| 267 |
+
<MV><![CDATA[MDV]]></MV>
|
| 268 |
+
<MX><![CDATA[MEX]]></MX>
|
| 269 |
+
<MK><![CDATA[MKD]]></MK>
|
| 270 |
+
<ML><![CDATA[MLI]]></ML>
|
| 271 |
+
<MT><![CDATA[MLT]]></MT>
|
| 272 |
+
<MM><![CDATA[MMR]]></MM>
|
| 273 |
+
<MN><![CDATA[MNG]]></MN>
|
| 274 |
+
<MZ><![CDATA[MOZ]]></MZ>
|
| 275 |
+
<MR><![CDATA[MRT]]></MR>
|
| 276 |
+
<MU><![CDATA[MUS]]></MU>
|
| 277 |
+
<MW><![CDATA[MWI]]></MW>
|
| 278 |
+
<MY><![CDATA[MYS]]></MY>
|
| 279 |
+
<NA><![CDATA[NAM]]></NA>
|
| 280 |
+
<NE><![CDATA[NER]]></NE>
|
| 281 |
+
<NG><![CDATA[NGA]]></NG>
|
| 282 |
+
<NI><![CDATA[NIC]]></NI>
|
| 283 |
+
<NL><![CDATA[NLD]]></NL>
|
| 284 |
+
<NO><![CDATA[NOR]]></NO>
|
| 285 |
+
<NP><![CDATA[NPL]]></NP>
|
| 286 |
+
<NR><![CDATA[NRU]]></NR>
|
| 287 |
+
<NZ><![CDATA[NZL]]></NZ>
|
| 288 |
+
<OM><![CDATA[OMN]]></OM>
|
| 289 |
+
<PK><![CDATA[PAK]]></PK>
|
| 290 |
+
<PA><![CDATA[PAN]]></PA>
|
| 291 |
+
<PE><![CDATA[PER]]></PE>
|
| 292 |
+
<PH><![CDATA[PHL]]></PH>
|
| 293 |
+
<PG><![CDATA[PNG]]></PG>
|
| 294 |
+
<PL><![CDATA[POL]]></PL>
|
| 295 |
+
<KP><![CDATA[PRK]]></KP>
|
| 296 |
+
<PT><![CDATA[PRT]]></PT>
|
| 297 |
+
<PY><![CDATA[PRY]]></PY>
|
| 298 |
+
<QA><![CDATA[QAT]]></QA>
|
| 299 |
+
<RO><![CDATA[ROU]]></RO>
|
| 300 |
+
<RU><![CDATA[RUS]]></RU>
|
| 301 |
+
<RW><![CDATA[RWA]]></RW>
|
| 302 |
+
<SA><![CDATA[SAU]]></SA>
|
| 303 |
+
<RS><![CDATA[SCG]]></RS>
|
| 304 |
+
<SD><![CDATA[SDN]]></SD>
|
| 305 |
+
<SN><![CDATA[SEN]]></SN>
|
| 306 |
+
<SG><![CDATA[SGF]]></SG>
|
| 307 |
+
<SB><![CDATA[SLB]]></SB>
|
| 308 |
+
<SL><![CDATA[SLE]]></SL>
|
| 309 |
+
<SV><![CDATA[SLV]]></SV>
|
| 310 |
+
<SO><![CDATA[SOM]]></SO>
|
| 311 |
+
<ST><![CDATA[STP]]></ST>
|
| 312 |
+
<SR><![CDATA[SUR]]></SR>
|
| 313 |
+
<SK><![CDATA[SVK]]></SK>
|
| 314 |
+
<SI><![CDATA[SVN]]></SI>
|
| 315 |
+
<SE><![CDATA[SWE]]></SE>
|
| 316 |
+
<SZ><![CDATA[SWZ]]></SZ>
|
| 317 |
+
<SC><![CDATA[SYC]]></SC>
|
| 318 |
+
<SY><![CDATA[SYR]]></SY>
|
| 319 |
+
<TD><![CDATA[TCD]]></TD>
|
| 320 |
+
<TG><![CDATA[TGO]]></TG>
|
| 321 |
+
<TH><![CDATA[THA]]></TH>
|
| 322 |
+
<TJ><![CDATA[TJK]]></TJ>
|
| 323 |
+
<TM><![CDATA[TKM]]></TM>
|
| 324 |
+
<TO><![CDATA[TON]]></TO>
|
| 325 |
+
<TT><![CDATA[TTO]]></TT>
|
| 326 |
+
<TN><![CDATA[TUN]]></TN>
|
| 327 |
+
<TR><![CDATA[TUR]]></TR>
|
| 328 |
+
<TV><![CDATA[TUV]]></TV>
|
| 329 |
+
<TZ><![CDATA[TZA]]></TZ>
|
| 330 |
+
<UG><![CDATA[UGA]]></UG>
|
| 331 |
+
<UA><![CDATA[UKR]]></UA>
|
| 332 |
+
<UY><![CDATA[URY]]></UY>
|
| 333 |
+
<US><![CDATA[USA]]></US>
|
| 334 |
+
<UZ><![CDATA[UZB]]></UZ>
|
| 335 |
+
<VC><![CDATA[VCT]]></VC>
|
| 336 |
+
<VE><![CDATA[VEN]]></VE>
|
| 337 |
+
<VN><![CDATA[VNM]]></VN>
|
| 338 |
+
<VU><![CDATA[VUT]]></VU>
|
| 339 |
+
<WS><![CDATA[WSM]]></WS>
|
| 340 |
+
<YE><![CDATA[YEM]]></YE>
|
| 341 |
+
<ZA><![CDATA[ZAF]]></ZA>
|
| 342 |
+
<ZM><![CDATA[ZMB]]></ZM>
|
| 343 |
+
<ZW><![CDATA[ZWE]]></ZW>
|
| 344 |
+
</dataset>
|
| 345 |
+
<nomap><!-- for special countries ITA, RUS, BRA -->
|
| 346 |
+
<countries>
|
| 347 |
+
<IT><![CDATA[ITA]]></IT>
|
| 348 |
+
<RU><![CDATA[RUS]]></RU>
|
| 349 |
+
<BR><![CDATA[BRA]]></BR>
|
| 350 |
+
</countries>
|
| 351 |
+
<address_keys>
|
| 352 |
+
<MAGENTO2012_street_1>
|
| 353 |
+
<key><![CDATA[Street 1]]></key>
|
| 354 |
+
<value><![CDATA[street_1]]></value>
|
| 355 |
+
</MAGENTO2012_street_1>
|
| 356 |
+
<MAGENTO2012_city>
|
| 357 |
+
<key><![CDATA[City]]></key>
|
| 358 |
+
<value><![CDATA[city]]></value>
|
| 359 |
+
</MAGENTO2012_city>
|
| 360 |
+
<MAGENTO2012_state_province>
|
| 361 |
+
<key><![CDATA[State/Province]]></key>
|
| 362 |
+
<value><![CDATA[region]]></value>
|
| 363 |
+
</MAGENTO2012_state_province>
|
| 364 |
+
<MAGENTO2012_zip_postal_code>
|
| 365 |
+
<key><![CDATA[ZIP/Postal Code]]></key>
|
| 366 |
+
<value><![CDATA[zip]]></value>
|
| 367 |
+
</MAGENTO2012_zip_postal_code>
|
| 368 |
+
<MAGENTO2012_country_region>
|
| 369 |
+
<key><![CDATA[Country/Region]]></key>
|
| 370 |
+
<value><![CDATA[country]]></value>
|
| 371 |
+
</MAGENTO2012_country_region>
|
| 372 |
+
</address_keys>
|
| 373 |
+
</nomap>
|
| 374 |
+
</mapping>
|
| 375 |
+
</global>
|
| 376 |
+
<frontend>
|
| 377 |
+
<routers>
|
| 378 |
+
<qas>
|
| 379 |
+
<use>standard</use>
|
| 380 |
+
<args>
|
| 381 |
+
<module>Experian_Qas</module>
|
| 382 |
+
<frontName>qas</frontName>
|
| 383 |
+
</args>
|
| 384 |
+
</qas>
|
| 385 |
+
</routers>
|
| 386 |
+
<layout>
|
| 387 |
+
<updates>
|
| 388 |
+
<experian_qas>
|
| 389 |
+
<file>experian_qas.xml</file>
|
| 390 |
+
</experian_qas>
|
| 391 |
+
</updates>
|
| 392 |
+
</layout>
|
| 393 |
+
<translate>
|
| 394 |
+
<modules>
|
| 395 |
+
<Experian_Qas>
|
| 396 |
+
<files>
|
| 397 |
+
<default>Experian_Qas.csv</default>
|
| 398 |
+
</files>
|
| 399 |
+
</Experian_Qas>
|
| 400 |
+
</modules>
|
| 401 |
+
</translate>
|
| 402 |
+
</frontend>
|
| 403 |
+
<default>
|
| 404 |
+
<qas_address_verifier>
|
| 405 |
+
<general>
|
| 406 |
+
<wsdl_name>wsv3.wsdl</wsdl_name>
|
| 407 |
+
<on_demand_url>http://www.qas.com/OnDemand-2011-03</on_demand_url>
|
| 408 |
+
</general>
|
| 409 |
+
<email_validate>
|
| 410 |
+
<email_validate_url>https://api.experianmarketingservices.com/sync/queryresult/EmailValidate/1.0/</email_validate_url>
|
| 411 |
+
</email_validate>
|
| 412 |
+
</qas_address_verifier>
|
| 413 |
+
</default>
|
| 414 |
+
</config>
|
app/code/community/Experian/Qas/etc/jstranslator.xml
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* @category Experian
|
| 5 |
+
* @package Experian_Qas
|
| 6 |
+
* @copyright Experian 2012
|
| 7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 8 |
+
*/
|
| 9 |
+
-->
|
| 10 |
+
<jstranslator>
|
| 11 |
+
<one-or-more-services-timed-out translate="message" module="experian_qas">
|
| 12 |
+
<message>One or more services timed out</message>
|
| 13 |
+
</one-or-more-services-timed-out>
|
| 14 |
+
<one-or-more-services-failed translate="message" module="experian_qas">
|
| 15 |
+
<message>One or more services failed</message>
|
| 16 |
+
</one-or-more-services-failed>
|
| 17 |
+
<success translate="message" module="experian_qas">
|
| 18 |
+
<message>Success</message>
|
| 19 |
+
</success>
|
| 20 |
+
<invalid-request translate="message" module="experian_qas">
|
| 21 |
+
<message>Invalid request</message>
|
| 22 |
+
</invalid-request>
|
| 23 |
+
<invalid-parameter translate="message" module="experian_qas">
|
| 24 |
+
<message>Invalid parameter</message>
|
| 25 |
+
</invalid-parameter>
|
| 26 |
+
<not-authorized-for-one-or-more-services translate="message" module="experian_qas">
|
| 27 |
+
<message>Not authorized for one or more services</message>
|
| 28 |
+
</not-authorized-for-one-or-more-services>
|
| 29 |
+
<service-unavailable translate="message" module="experian_qas">
|
| 30 |
+
<message>Service unavailable</message>
|
| 31 |
+
</service-unavailable>
|
| 32 |
+
<email-codes-code-description translate="message" module="experian_qas">
|
| 33 |
+
<message>Email codes Code Description</message>
|
| 34 |
+
</email-codes-code-description>
|
| 35 |
+
<timeout translate="message" module="experian_qas">
|
| 36 |
+
<message>Timeout</message>
|
| 37 |
+
</timeout>
|
| 38 |
+
<syntax-ok translate="message" module="experian_qas">
|
| 39 |
+
<message>Syntax OK</message>
|
| 40 |
+
</syntax-ok>
|
| 41 |
+
<syntax-ok-and-domain-valid-according-to-the-domain-database translate="message" module="experian_qas">
|
| 42 |
+
<message>Syntax OK and domain valid according to the domain database</message>
|
| 43 |
+
</syntax-ok-and-domain-valid-according-to-the-domain-database>
|
| 44 |
+
<syntax-ok-and-domain-exists translate="message" module="experian_qas">
|
| 45 |
+
<message>Syntax OK and domain exists</message>
|
| 46 |
+
</syntax-ok-and-domain-exists>
|
| 47 |
+
<syntax-ok-domain-exists-and-domain-can-receive-email translate="message" module="experian_qas">
|
| 48 |
+
<message>Syntax OK, domain exists, and domain can receive email</message>
|
| 49 |
+
</syntax-ok-domain-exists-and-domain-can-receive-email>
|
| 50 |
+
<syntax-ok-domain-exists-and-mailbox-does-not-reject-mail translate="message" module="experian_qas">
|
| 51 |
+
<message>Syntax OK, domain exists, and mailbox does not reject mail</message>
|
| 52 |
+
</syntax-ok-domain-exists-and-mailbox-does-not-reject-mail>
|
| 53 |
+
<general-syntax-error translate="message" module="experian_qas">
|
| 54 |
+
<message>General syntax error</message>
|
| 55 |
+
</general-syntax-error>
|
| 56 |
+
<invalid-character-in-address translate="message" module="experian_qas">
|
| 57 |
+
<message>Invalid character in address</message>
|
| 58 |
+
</invalid-character-in-address>
|
| 59 |
+
<invalid-domain-syntax translate="message" module="experian_qas">
|
| 60 |
+
<message>Invalid domain syntax</message>
|
| 61 |
+
</invalid-domain-syntax>
|
| 62 |
+
<invalid-username-syntax translate="message" module="experian_qas">
|
| 63 |
+
<message>Invalid username syntax</message>
|
| 64 |
+
</invalid-username-syntax>
|
| 65 |
+
<invalid-username-syntax-for-that-domain translate="message" module="experian_qas">
|
| 66 |
+
<message>Invalid username syntax for that domain</message>
|
| 67 |
+
</invalid-username-syntax-for-that-domain>
|
| 68 |
+
<address-is-too-long translate="message" module="experian_qas">
|
| 69 |
+
<message>Address is too long</message>
|
| 70 |
+
</address-is-too-long>
|
| 71 |
+
<address-has-unbalanced-parentheses-brackets-or-quotes translate="message" module="experian_qas">
|
| 72 |
+
<message>Address has unbalanced parentheses, brackets, or quotes</message>
|
| 73 |
+
</address-has-unbalanced-parentheses-brackets-or-quotes>
|
| 74 |
+
<address-does-not-have-a-username translate="message" module="experian_qas">
|
| 75 |
+
<message>Address does not have a username</message>
|
| 76 |
+
</address-does-not-have-a-username>
|
| 77 |
+
<address-does-not-have-a-domain translate="message" module="experian_qas">
|
| 78 |
+
<message>Address does not have a domain</message>
|
| 79 |
+
</address-does-not-have-a-domain>
|
| 80 |
+
<address-does-not-have-an-sign translate="message" module="experian_qas">
|
| 81 |
+
<message>Address does not have an @ sign</message>
|
| 82 |
+
</address-does-not-have-an-sign>
|
| 83 |
+
<address-has-more-than-one-sign translate="message" module="experian_qas">
|
| 84 |
+
<message>Address has more than one @ sign</message>
|
| 85 |
+
</address-has-more-than-one-sign>
|
| 86 |
+
<invalid-top-level-domain-tld-in-address translate="message" module="experian_qas">
|
| 87 |
+
<message>Invalid top-level-domain (TLD) in address</message>
|
| 88 |
+
</invalid-top-level-domain-tld-in-address>
|
| 89 |
+
<unquoted-spaces-are-not-allowed-in-email-addresses translate="message" module="experian_qas">
|
| 90 |
+
<message>Unquoted spaces are not allowed in email addresses</message>
|
| 91 |
+
</unquoted-spaces-are-not-allowed-in-email-addresses>
|
| 92 |
+
<domain-does-not-exist translate="message" module="experian_qas">
|
| 93 |
+
<message>Domain does not exist</message>
|
| 94 |
+
</domain-does-not-exist>
|
| 95 |
+
<domain-does-not-have-a-valid-ip-address translate="message" module="experian_qas">
|
| 96 |
+
<message>Domain does not have a valid IP address</message>
|
| 97 |
+
</domain-does-not-have-a-valid-ip-address>
|
| 98 |
+
<domain-cannot-receive-email translate="message" module="experian_qas">
|
| 99 |
+
<message>Domain cannot receive email</message>
|
| 100 |
+
</domain-cannot-receive-email>
|
| 101 |
+
<the-mailbox-is-invalid-or-the-username-does-not-exist-at-the-domain translate="message" module="experian_qas">
|
| 102 |
+
<message>The mailbox is invalid or the username does not exist at the domain</message>
|
| 103 |
+
</the-mailbox-is-invalid-or-the-username-does-not-exist-at-the-domain>
|
| 104 |
+
<mailbox-is-full-and-can-not-receive-email-at-this-time translate="message" module="experian_qas">
|
| 105 |
+
<message>Mailbox is full and can not receive email at this time</message>
|
| 106 |
+
</mailbox-is-full-and-can-not-receive-email-at-this-time>
|
| 107 |
+
<mail-is-not-accepted-for-this-domain translate="message" module="experian_qas">
|
| 108 |
+
<message>Mail is not accepted for this domain</message>
|
| 109 |
+
</mail-is-not-accepted-for-this-domain>
|
| 110 |
+
<addresses-with-that-username-are-not-allowed translate="message" module="experian_qas">
|
| 111 |
+
<message>Addresses with that username are not allowed</message>
|
| 112 |
+
</addresses-with-that-username-are-not-allowed>
|
| 113 |
+
<addresses-with-that-domain-are-not-allowed translate="message" module="experian_qas">
|
| 114 |
+
<message>Addresses with that domain are not allowed</message>
|
| 115 |
+
</addresses-with-that-domain-are-not-allowed>
|
| 116 |
+
<the-email-address-is-suppressed-and-not-allowed translate="message" module="experian_qas">
|
| 117 |
+
<message>The email address is suppressed and not allowed</message>
|
| 118 |
+
</the-email-address-is-suppressed-and-not-allowed>
|
| 119 |
+
<internal-error translate="message" module="experian_qas">
|
| 120 |
+
<message>Internal error</message>
|
| 121 |
+
</internal-error>
|
| 122 |
+
<unreachable translate="message" module="experian_qas">
|
| 123 |
+
<message>unreachable</message>
|
| 124 |
+
</unreachable>
|
| 125 |
+
<unknown translate="message" module="experian_qas">
|
| 126 |
+
<message>unknown</message>
|
| 127 |
+
</unknown>
|
| 128 |
+
<illegitimate translate="message" module="experian_qas">
|
| 129 |
+
<message>illegitimate</message>
|
| 130 |
+
</illegitimate>
|
| 131 |
+
<disposable translate="message" module="experian_qas">
|
| 132 |
+
<message>disposable</message>
|
| 133 |
+
</disposable>
|
| 134 |
+
<undeliverable translate="message" module="experian_qas">
|
| 135 |
+
<message>undeliverable</message>
|
| 136 |
+
</undeliverable>
|
| 137 |
+
</jstranslator>
|
app/code/community/Experian/Qas/etc/system.xml
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* @category Experian
|
| 5 |
+
* @package Experian_Qas
|
| 6 |
+
* @copyright Experian 2012
|
| 7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 8 |
+
*/
|
| 9 |
+
-->
|
| 10 |
+
<config>
|
| 11 |
+
<sections>
|
| 12 |
+
<qas_address_verifier translate="label">
|
| 13 |
+
<label>Experian</label>
|
| 14 |
+
<tab>customer</tab>
|
| 15 |
+
<sort_order>1000</sort_order>
|
| 16 |
+
<show_in_default>1</show_in_default>
|
| 17 |
+
<show_in_website>1</show_in_website>
|
| 18 |
+
<show_in_store>1</show_in_store>
|
| 19 |
+
<groups>
|
| 20 |
+
<general translate="label">
|
| 21 |
+
<label>General</label>
|
| 22 |
+
<frontend_type>text</frontend_type>
|
| 23 |
+
<sort_order>1</sort_order>
|
| 24 |
+
<show_in_default>1</show_in_default>
|
| 25 |
+
<show_in_website>1</show_in_website>
|
| 26 |
+
<show_in_store>1</show_in_store>
|
| 27 |
+
<fields>
|
| 28 |
+
<enable translate="label">
|
| 29 |
+
<label>Enable</label>
|
| 30 |
+
<frontend_type>select</frontend_type>
|
| 31 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 32 |
+
<sort_order>10</sort_order>
|
| 33 |
+
<show_in_default>1</show_in_default>
|
| 34 |
+
<show_in_website>0</show_in_website>
|
| 35 |
+
<show_in_store>0</show_in_store>
|
| 36 |
+
</enable>
|
| 37 |
+
<api_user translate="label comment">
|
| 38 |
+
<label>API User</label>
|
| 39 |
+
<frontend_type>text</frontend_type>
|
| 40 |
+
<sort_order>20</sort_order>
|
| 41 |
+
<show_in_default>1</show_in_default>
|
| 42 |
+
<show_in_website>0</show_in_website>
|
| 43 |
+
<show_in_store>0</show_in_store>
|
| 44 |
+
</api_user>
|
| 45 |
+
<api_password translate="label comment">
|
| 46 |
+
<label>API Password</label>
|
| 47 |
+
<frontend_type>password</frontend_type>
|
| 48 |
+
<sort_order>30</sort_order>
|
| 49 |
+
<show_in_default>1</show_in_default>
|
| 50 |
+
<show_in_website>0</show_in_website>
|
| 51 |
+
<show_in_store>0</show_in_store>
|
| 52 |
+
</api_password>
|
| 53 |
+
</fields>
|
| 54 |
+
</general>
|
| 55 |
+
<email_validate translate="label">
|
| 56 |
+
<label>Email Validate</label>
|
| 57 |
+
<frontend_type>text</frontend_type>
|
| 58 |
+
<sort_order>2</sort_order>
|
| 59 |
+
<show_in_default>1</show_in_default>
|
| 60 |
+
<show_in_website>1</show_in_website>
|
| 61 |
+
<show_in_store>1</show_in_store>
|
| 62 |
+
<fields>
|
| 63 |
+
<enable_email_validate translate="label">
|
| 64 |
+
<label>Enable Email Validate</label>
|
| 65 |
+
<frontend_type>select</frontend_type>
|
| 66 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 67 |
+
<sort_order>40</sort_order>
|
| 68 |
+
<show_in_default>1</show_in_default>
|
| 69 |
+
<show_in_website>1</show_in_website>
|
| 70 |
+
<show_in_store>1</show_in_store>
|
| 71 |
+
</enable_email_validate>
|
| 72 |
+
<license_email_validate translate="label">
|
| 73 |
+
<label>Email Validate License</label>
|
| 74 |
+
<frontend_type>text</frontend_type>
|
| 75 |
+
<sort_order>50</sort_order>
|
| 76 |
+
<show_in_default>1</show_in_default>
|
| 77 |
+
<show_in_website>0</show_in_website>
|
| 78 |
+
<show_in_store>0</show_in_store>
|
| 79 |
+
</license_email_validate>
|
| 80 |
+
<accept_unknowns_emails translate="label">
|
| 81 |
+
<label>Accept Unknowns Emails</label>
|
| 82 |
+
<frontend_type>select</frontend_type>
|
| 83 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 84 |
+
<sort_order>60</sort_order>
|
| 85 |
+
<show_in_default>1</show_in_default>
|
| 86 |
+
<show_in_website>1</show_in_website>
|
| 87 |
+
<show_in_store>1</show_in_store>
|
| 88 |
+
</accept_unknowns_emails>
|
| 89 |
+
</fields>
|
| 90 |
+
</email_validate>
|
| 91 |
+
<address_search_engine translate="label">
|
| 92 |
+
<label>Address Search Engine</label>
|
| 93 |
+
<frontend_type>text</frontend_type>
|
| 94 |
+
<frontend_model>experian_qas/adminhtml_system_config_form_intuitiveCountryFieldset</frontend_model>
|
| 95 |
+
<sort_order>3</sort_order>
|
| 96 |
+
<show_in_default>1</show_in_default>
|
| 97 |
+
<show_in_website>1</show_in_website>
|
| 98 |
+
<show_in_store>1</show_in_store>
|
| 99 |
+
<fields>
|
| 100 |
+
<enable_intuitive_search translate="label">
|
| 101 |
+
<label>Enable Intuitive Search</label>
|
| 102 |
+
<frontend_type>select</frontend_type>
|
| 103 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 104 |
+
<sort_order>50</sort_order>
|
| 105 |
+
<show_in_default>1</show_in_default>
|
| 106 |
+
<show_in_website>1</show_in_website>
|
| 107 |
+
<show_in_store>1</show_in_store>
|
| 108 |
+
<comment>Autocomplete Address Search Engine is only available for France</comment>
|
| 109 |
+
</enable_intuitive_search>
|
| 110 |
+
<enable_cache translate="label">
|
| 111 |
+
<label>Enable API call cache</label>
|
| 112 |
+
<frontend_type>select</frontend_type>
|
| 113 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 114 |
+
<sort_order>60</sort_order>
|
| 115 |
+
<show_in_default>1</show_in_default>
|
| 116 |
+
<show_in_website>1</show_in_website>
|
| 117 |
+
<show_in_store>1</show_in_store>
|
| 118 |
+
<comment>Enable Magento Cache for autocompletion (Intuitive) api call</comment>
|
| 119 |
+
</enable_cache>
|
| 120 |
+
</fields>
|
| 121 |
+
</address_search_engine>
|
| 122 |
+
</groups>
|
| 123 |
+
</qas_address_verifier>
|
| 124 |
+
</sections>
|
| 125 |
+
</config>
|
app/code/community/Experian/Qas/etc/wsv3.wsdl
ADDED
|
@@ -0,0 +1,908 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
| 2 |
+
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.qas.com/OnDemand-2011-03" xmlns:s1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.qas.com/OnDemand-2011-03" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
|
| 3 |
+
<wsdl:types>
|
| 4 |
+
<s:schema elementFormDefault="qualified" targetNamespace="http://www.qas.com/OnDemand-2011-03">
|
| 5 |
+
<s:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />
|
| 6 |
+
<s:element name="QACanSearch">
|
| 7 |
+
<s:complexType>
|
| 8 |
+
<s:sequence>
|
| 9 |
+
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
|
| 10 |
+
<s:element minOccurs="0" maxOccurs="1" name="Engine" type="tns:EngineType" />
|
| 11 |
+
<s:element minOccurs="0" maxOccurs="1" name="Layout" type="s:string" />
|
| 12 |
+
</s:sequence>
|
| 13 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 14 |
+
</s:complexType>
|
| 15 |
+
</s:element>
|
| 16 |
+
<s:complexType name="EngineType">
|
| 17 |
+
<s:simpleContent>
|
| 18 |
+
<s:extension base="tns:EngineEnumType">
|
| 19 |
+
<s:attribute name="Flatten" type="s:boolean" />
|
| 20 |
+
<s:attribute name="Intensity" type="tns:EngineIntensityType" />
|
| 21 |
+
<s:attribute name="PromptSet" type="tns:PromptSetType" />
|
| 22 |
+
<s:attribute name="Threshold" type="s:positiveInteger" />
|
| 23 |
+
<s:attribute name="Timeout" type="s:nonNegativeInteger" />
|
| 24 |
+
</s:extension>
|
| 25 |
+
</s:simpleContent>
|
| 26 |
+
</s:complexType>
|
| 27 |
+
<s:simpleType name="EngineEnumType">
|
| 28 |
+
<s:restriction base="s:string">
|
| 29 |
+
<s:enumeration value="Singleline" />
|
| 30 |
+
<s:enumeration value="Typedown" />
|
| 31 |
+
<s:enumeration value="Verification" />
|
| 32 |
+
<s:enumeration value="Keyfinder" />
|
| 33 |
+
</s:restriction>
|
| 34 |
+
</s:simpleType>
|
| 35 |
+
<s:simpleType name="EngineIntensityType">
|
| 36 |
+
<s:restriction base="s:string">
|
| 37 |
+
<s:enumeration value="Exact" />
|
| 38 |
+
<s:enumeration value="Close" />
|
| 39 |
+
<s:enumeration value="Extensive" />
|
| 40 |
+
</s:restriction>
|
| 41 |
+
</s:simpleType>
|
| 42 |
+
<s:simpleType name="PromptSetType">
|
| 43 |
+
<s:restriction base="s:string">
|
| 44 |
+
<s:enumeration value="OneLine" />
|
| 45 |
+
<s:enumeration value="Default" />
|
| 46 |
+
<s:enumeration value="Generic" />
|
| 47 |
+
<s:enumeration value="Optimal" />
|
| 48 |
+
<s:enumeration value="Alternate" />
|
| 49 |
+
<s:enumeration value="Alternate2" />
|
| 50 |
+
<s:enumeration value="Alternate3" />
|
| 51 |
+
</s:restriction>
|
| 52 |
+
</s:simpleType>
|
| 53 |
+
<s:element name="QASearchOk">
|
| 54 |
+
<s:complexType>
|
| 55 |
+
<s:sequence>
|
| 56 |
+
<s:element minOccurs="1" maxOccurs="1" name="IsOk" type="s:boolean" />
|
| 57 |
+
<s:element minOccurs="0" maxOccurs="1" name="ErrorCode" type="s:string" />
|
| 58 |
+
<s:element minOccurs="0" maxOccurs="1" name="ErrorMessage" type="s:string" />
|
| 59 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="ErrorDetail" type="s:string" />
|
| 60 |
+
</s:sequence>
|
| 61 |
+
</s:complexType>
|
| 62 |
+
</s:element>
|
| 63 |
+
<s:element name="QAQueryHeader" type="tns:QAQueryHeader" />
|
| 64 |
+
<s:complexType name="QAQueryHeader">
|
| 65 |
+
<s:sequence>
|
| 66 |
+
<s:element minOccurs="0" maxOccurs="1" name="QAAuthentication" type="tns:QAAuthentication" />
|
| 67 |
+
<s:element minOccurs="0" maxOccurs="1" name="Security" type="s1:SecurityHeaderType" />
|
| 68 |
+
</s:sequence>
|
| 69 |
+
<s:anyAttribute />
|
| 70 |
+
</s:complexType>
|
| 71 |
+
<s:complexType name="QAAuthentication">
|
| 72 |
+
<s:sequence>
|
| 73 |
+
<s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string" />
|
| 74 |
+
<s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string" />
|
| 75 |
+
</s:sequence>
|
| 76 |
+
</s:complexType>
|
| 77 |
+
<s:element name="QAInformation" type="tns:QAInformation" />
|
| 78 |
+
<s:complexType name="QAInformation">
|
| 79 |
+
<s:sequence>
|
| 80 |
+
<s:element minOccurs="0" maxOccurs="1" name="StateTransition" type="s:string" />
|
| 81 |
+
<s:element minOccurs="1" maxOccurs="1" name="CreditsUsed" type="s:long" />
|
| 82 |
+
</s:sequence>
|
| 83 |
+
<s:anyAttribute />
|
| 84 |
+
</s:complexType>
|
| 85 |
+
<s:element name="QAGetAddress">
|
| 86 |
+
<s:complexType>
|
| 87 |
+
<s:sequence>
|
| 88 |
+
<s:element minOccurs="0" maxOccurs="1" name="Layout" type="s:string" />
|
| 89 |
+
<s:element minOccurs="0" maxOccurs="1" name="Moniker" type="s:string" />
|
| 90 |
+
</s:sequence>
|
| 91 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 92 |
+
</s:complexType>
|
| 93 |
+
</s:element>
|
| 94 |
+
<s:element name="Address">
|
| 95 |
+
<s:complexType>
|
| 96 |
+
<s:sequence>
|
| 97 |
+
<s:element minOccurs="0" maxOccurs="1" name="QAAddress" type="tns:QAAddressType" />
|
| 98 |
+
</s:sequence>
|
| 99 |
+
</s:complexType>
|
| 100 |
+
</s:element>
|
| 101 |
+
<s:complexType name="QAAddressType">
|
| 102 |
+
<s:sequence>
|
| 103 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="AddressLine" type="tns:AddressLineType" />
|
| 104 |
+
</s:sequence>
|
| 105 |
+
<s:attribute default="false" name="Overflow" type="s:boolean" />
|
| 106 |
+
<s:attribute default="false" name="Truncated" type="s:boolean" />
|
| 107 |
+
<s:attribute name="DPVStatus" type="tns:DPVStatusType" />
|
| 108 |
+
</s:complexType>
|
| 109 |
+
<s:complexType name="AddressLineType">
|
| 110 |
+
<s:sequence>
|
| 111 |
+
<s:element minOccurs="0" maxOccurs="1" name="Label" type="s:string" />
|
| 112 |
+
<s:element minOccurs="0" maxOccurs="1" name="Line" type="s:string" />
|
| 113 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="DataplusGroup" type="tns:DataplusGroupType" />
|
| 114 |
+
</s:sequence>
|
| 115 |
+
<s:attribute default="Address" name="LineContent" type="tns:LineContentType" />
|
| 116 |
+
<s:attribute default="false" name="Overflow" type="s:boolean" />
|
| 117 |
+
<s:attribute default="false" name="Truncated" type="s:boolean" />
|
| 118 |
+
</s:complexType>
|
| 119 |
+
<s:complexType name="DataplusGroupType">
|
| 120 |
+
<s:sequence>
|
| 121 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="DataplusGroupItem" type="s:string" />
|
| 122 |
+
</s:sequence>
|
| 123 |
+
<s:attribute name="GroupName" type="s:string" />
|
| 124 |
+
</s:complexType>
|
| 125 |
+
<s:simpleType name="LineContentType">
|
| 126 |
+
<s:restriction base="s:string">
|
| 127 |
+
<s:enumeration value="None" />
|
| 128 |
+
<s:enumeration value="Address" />
|
| 129 |
+
<s:enumeration value="Name" />
|
| 130 |
+
<s:enumeration value="Ancillary" />
|
| 131 |
+
<s:enumeration value="DataPlus" />
|
| 132 |
+
</s:restriction>
|
| 133 |
+
</s:simpleType>
|
| 134 |
+
<s:simpleType name="DPVStatusType">
|
| 135 |
+
<s:restriction base="s:string">
|
| 136 |
+
<s:enumeration value="DPVNotConfigured" />
|
| 137 |
+
<s:enumeration value="DPVConfigured" />
|
| 138 |
+
<s:enumeration value="DPVConfirmed" />
|
| 139 |
+
<s:enumeration value="DPVConfirmedMissingSec" />
|
| 140 |
+
<s:enumeration value="DPVNotConfirmed" />
|
| 141 |
+
<s:enumeration value="DPVLocked" />
|
| 142 |
+
<s:enumeration value="DPVSeedHit" />
|
| 143 |
+
</s:restriction>
|
| 144 |
+
</s:simpleType>
|
| 145 |
+
<s:element name="QAGetData">
|
| 146 |
+
<s:complexType>
|
| 147 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 148 |
+
</s:complexType>
|
| 149 |
+
</s:element>
|
| 150 |
+
<s:element name="QAData" type="tns:ArrayOfQADataSet" />
|
| 151 |
+
<s:complexType name="ArrayOfQADataSet">
|
| 152 |
+
<s:sequence>
|
| 153 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="DataSet" type="tns:QADataSet" />
|
| 154 |
+
</s:sequence>
|
| 155 |
+
</s:complexType>
|
| 156 |
+
<s:complexType name="QADataSet">
|
| 157 |
+
<s:sequence>
|
| 158 |
+
<s:element minOccurs="0" maxOccurs="1" name="ID" type="s:string" />
|
| 159 |
+
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
|
| 160 |
+
</s:sequence>
|
| 161 |
+
</s:complexType>
|
| 162 |
+
<s:element name="QAGetExampleAddresses">
|
| 163 |
+
<s:complexType>
|
| 164 |
+
<s:sequence>
|
| 165 |
+
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
|
| 166 |
+
<s:element minOccurs="0" maxOccurs="1" name="Layout" type="s:string" />
|
| 167 |
+
</s:sequence>
|
| 168 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 169 |
+
</s:complexType>
|
| 170 |
+
</s:element>
|
| 171 |
+
<s:element name="QAExampleAddresses" type="tns:ArrayOfQAExampleAddress" />
|
| 172 |
+
<s:complexType name="ArrayOfQAExampleAddress">
|
| 173 |
+
<s:sequence>
|
| 174 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="ExampleAddress" type="tns:QAExampleAddress" />
|
| 175 |
+
</s:sequence>
|
| 176 |
+
</s:complexType>
|
| 177 |
+
<s:complexType name="QAExampleAddress">
|
| 178 |
+
<s:sequence>
|
| 179 |
+
<s:element minOccurs="0" maxOccurs="1" name="Address" type="tns:QAAddressType" />
|
| 180 |
+
<s:element minOccurs="0" maxOccurs="1" name="Comment" type="s:string" />
|
| 181 |
+
</s:sequence>
|
| 182 |
+
</s:complexType>
|
| 183 |
+
<s:element name="QAGetLayouts">
|
| 184 |
+
<s:complexType>
|
| 185 |
+
<s:sequence>
|
| 186 |
+
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
|
| 187 |
+
</s:sequence>
|
| 188 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 189 |
+
</s:complexType>
|
| 190 |
+
</s:element>
|
| 191 |
+
<s:element name="QALayouts" type="tns:ArrayOfQALayout" />
|
| 192 |
+
<s:complexType name="ArrayOfQALayout">
|
| 193 |
+
<s:sequence>
|
| 194 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="Layout" type="tns:QALayout" />
|
| 195 |
+
</s:sequence>
|
| 196 |
+
</s:complexType>
|
| 197 |
+
<s:complexType name="QALayout">
|
| 198 |
+
<s:sequence>
|
| 199 |
+
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
|
| 200 |
+
<s:element minOccurs="0" maxOccurs="1" name="Comment" type="s:string" />
|
| 201 |
+
</s:sequence>
|
| 202 |
+
</s:complexType>
|
| 203 |
+
<s:element name="QAGetLicenseInfo">
|
| 204 |
+
<s:complexType>
|
| 205 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 206 |
+
</s:complexType>
|
| 207 |
+
</s:element>
|
| 208 |
+
<s:element name="QALicenceInfo">
|
| 209 |
+
<s:complexType>
|
| 210 |
+
<s:sequence>
|
| 211 |
+
<s:element minOccurs="1" maxOccurs="1" name="WarningLevel" type="tns:LicenceWarningLevel" />
|
| 212 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="LicensedSet" type="tns:QALicensedSet" />
|
| 213 |
+
</s:sequence>
|
| 214 |
+
</s:complexType>
|
| 215 |
+
</s:element>
|
| 216 |
+
<s:simpleType name="LicenceWarningLevel">
|
| 217 |
+
<s:restriction base="s:string">
|
| 218 |
+
<s:enumeration value="None" />
|
| 219 |
+
<s:enumeration value="DataExpiring" />
|
| 220 |
+
<s:enumeration value="LicenceExpiring" />
|
| 221 |
+
<s:enumeration value="ClicksLow" />
|
| 222 |
+
<s:enumeration value="Evaluation" />
|
| 223 |
+
<s:enumeration value="NoClicks" />
|
| 224 |
+
<s:enumeration value="DataExpired" />
|
| 225 |
+
<s:enumeration value="EvalLicenceExpired" />
|
| 226 |
+
<s:enumeration value="FullLicenceExpired" />
|
| 227 |
+
<s:enumeration value="LicenceNotFound" />
|
| 228 |
+
<s:enumeration value="DataUnreadable" />
|
| 229 |
+
</s:restriction>
|
| 230 |
+
</s:simpleType>
|
| 231 |
+
<s:complexType name="QALicensedSet">
|
| 232 |
+
<s:sequence>
|
| 233 |
+
<s:element minOccurs="0" maxOccurs="1" name="ID" type="s:string" />
|
| 234 |
+
<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
|
| 235 |
+
<s:element minOccurs="0" maxOccurs="1" name="Copyright" type="s:string" />
|
| 236 |
+
<s:element minOccurs="0" maxOccurs="1" name="Version" type="s:string" />
|
| 237 |
+
<s:element minOccurs="0" maxOccurs="1" name="BaseCountry" type="s:string" />
|
| 238 |
+
<s:element minOccurs="0" maxOccurs="1" name="Status" type="s:string" />
|
| 239 |
+
<s:element minOccurs="0" maxOccurs="1" name="Server" type="s:string" />
|
| 240 |
+
<s:element minOccurs="1" maxOccurs="1" name="WarningLevel" type="tns:LicenceWarningLevel" />
|
| 241 |
+
<s:element minOccurs="0" maxOccurs="1" name="DaysLeft" type="s:nonNegativeInteger" />
|
| 242 |
+
<s:element minOccurs="0" maxOccurs="1" name="DataDaysLeft" type="s:nonNegativeInteger" />
|
| 243 |
+
<s:element minOccurs="0" maxOccurs="1" name="LicenceDaysLeft" type="s:nonNegativeInteger" />
|
| 244 |
+
</s:sequence>
|
| 245 |
+
</s:complexType>
|
| 246 |
+
<s:element name="QAGetPromptSet">
|
| 247 |
+
<s:complexType>
|
| 248 |
+
<s:sequence>
|
| 249 |
+
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
|
| 250 |
+
<s:element minOccurs="0" maxOccurs="1" name="Engine" type="tns:EngineType" />
|
| 251 |
+
<s:element minOccurs="1" maxOccurs="1" name="PromptSet" type="tns:PromptSetType" />
|
| 252 |
+
</s:sequence>
|
| 253 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 254 |
+
</s:complexType>
|
| 255 |
+
</s:element>
|
| 256 |
+
<s:element name="QAPromptSet">
|
| 257 |
+
<s:complexType>
|
| 258 |
+
<s:sequence>
|
| 259 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="Line" type="tns:PromptLine" />
|
| 260 |
+
</s:sequence>
|
| 261 |
+
<s:attribute default="false" name="Dynamic" type="s:boolean" />
|
| 262 |
+
</s:complexType>
|
| 263 |
+
</s:element>
|
| 264 |
+
<s:complexType name="PromptLine">
|
| 265 |
+
<s:sequence>
|
| 266 |
+
<s:element minOccurs="0" maxOccurs="1" name="Prompt" type="s:string" />
|
| 267 |
+
<s:element minOccurs="0" maxOccurs="1" name="SuggestedInputLength" type="s:nonNegativeInteger" />
|
| 268 |
+
<s:element minOccurs="0" maxOccurs="1" name="Example" type="s:string" />
|
| 269 |
+
</s:sequence>
|
| 270 |
+
</s:complexType>
|
| 271 |
+
<s:element name="QAGetSystemInfo">
|
| 272 |
+
<s:complexType>
|
| 273 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 274 |
+
</s:complexType>
|
| 275 |
+
</s:element>
|
| 276 |
+
<s:element name="QASystemInfo" type="tns:ArrayOfString" />
|
| 277 |
+
<s:complexType name="ArrayOfString">
|
| 278 |
+
<s:sequence>
|
| 279 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="SystemInfo" type="s:string" />
|
| 280 |
+
</s:sequence>
|
| 281 |
+
</s:complexType>
|
| 282 |
+
<s:element name="QARefine">
|
| 283 |
+
<s:complexType>
|
| 284 |
+
<s:sequence>
|
| 285 |
+
<s:element minOccurs="0" maxOccurs="1" name="Moniker" type="s:string" />
|
| 286 |
+
<s:element minOccurs="0" maxOccurs="1" name="Refinement" type="s:string" />
|
| 287 |
+
<s:element minOccurs="0" maxOccurs="1" name="Layout" type="s:string" />
|
| 288 |
+
</s:sequence>
|
| 289 |
+
<s:attribute name="Threshold" type="s:positiveInteger" />
|
| 290 |
+
<s:attribute name="Timeout" type="s:nonNegativeInteger" />
|
| 291 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 292 |
+
</s:complexType>
|
| 293 |
+
</s:element>
|
| 294 |
+
<s:element name="Picklist">
|
| 295 |
+
<s:complexType>
|
| 296 |
+
<s:sequence>
|
| 297 |
+
<s:element minOccurs="0" maxOccurs="1" name="QAPicklist" type="tns:QAPicklistType" />
|
| 298 |
+
</s:sequence>
|
| 299 |
+
</s:complexType>
|
| 300 |
+
</s:element>
|
| 301 |
+
<s:complexType name="QAPicklistType">
|
| 302 |
+
<s:sequence>
|
| 303 |
+
<s:element minOccurs="0" maxOccurs="1" name="FullPicklistMoniker" type="s:string" />
|
| 304 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="PicklistEntry" type="tns:PicklistEntryType" />
|
| 305 |
+
<s:element minOccurs="0" maxOccurs="1" name="Prompt" type="s:string" />
|
| 306 |
+
<s:element minOccurs="0" maxOccurs="1" name="Total" type="s:nonNegativeInteger" />
|
| 307 |
+
</s:sequence>
|
| 308 |
+
<s:attribute default="false" name="AutoFormatSafe" type="s:boolean" />
|
| 309 |
+
<s:attribute default="false" name="AutoFormatPastClose" type="s:boolean" />
|
| 310 |
+
<s:attribute default="false" name="AutoStepinSafe" type="s:boolean" />
|
| 311 |
+
<s:attribute default="false" name="AutoStepinPastClose" type="s:boolean" />
|
| 312 |
+
<s:attribute default="false" name="LargePotential" type="s:boolean" />
|
| 313 |
+
<s:attribute default="false" name="MaxMatches" type="s:boolean" />
|
| 314 |
+
<s:attribute default="false" name="MoreOtherMatches" type="s:boolean" />
|
| 315 |
+
<s:attribute default="false" name="OverThreshold" type="s:boolean" />
|
| 316 |
+
<s:attribute default="false" name="Timeout" type="s:boolean" />
|
| 317 |
+
</s:complexType>
|
| 318 |
+
<s:complexType name="PicklistEntryType">
|
| 319 |
+
<s:sequence>
|
| 320 |
+
<s:element minOccurs="0" maxOccurs="1" name="Moniker" type="s:string" />
|
| 321 |
+
<s:element minOccurs="0" maxOccurs="1" name="PartialAddress" type="s:string" />
|
| 322 |
+
<s:element minOccurs="0" maxOccurs="1" name="Picklist" type="s:string" />
|
| 323 |
+
<s:element minOccurs="0" maxOccurs="1" name="Postcode" type="s:string" />
|
| 324 |
+
<s:element minOccurs="0" maxOccurs="1" name="Score" type="s:nonNegativeInteger" />
|
| 325 |
+
</s:sequence>
|
| 326 |
+
<s:attribute default="false" name="FullAddress" type="s:boolean" />
|
| 327 |
+
<s:attribute default="false" name="Multiples" type="s:boolean" />
|
| 328 |
+
<s:attribute default="false" name="CanStep" type="s:boolean" />
|
| 329 |
+
<s:attribute default="false" name="AliasMatch" type="s:boolean" />
|
| 330 |
+
<s:attribute default="false" name="PostcodeRecoded" type="s:boolean" />
|
| 331 |
+
<s:attribute default="false" name="CrossBorderMatch" type="s:boolean" />
|
| 332 |
+
<s:attribute default="false" name="DummyPOBox" type="s:boolean" />
|
| 333 |
+
<s:attribute default="false" name="Name" type="s:boolean" />
|
| 334 |
+
<s:attribute default="false" name="Information" type="s:boolean" />
|
| 335 |
+
<s:attribute default="false" name="WarnInformation" type="s:boolean" />
|
| 336 |
+
<s:attribute default="false" name="IncompleteAddr" type="s:boolean" />
|
| 337 |
+
<s:attribute default="false" name="UnresolvableRange" type="s:boolean" />
|
| 338 |
+
<s:attribute default="false" name="PhantomPrimaryPoint" type="s:boolean" />
|
| 339 |
+
<s:attribute default="false" name="SubsidiaryData" type="s:boolean" />
|
| 340 |
+
<s:attribute default="false" name="ExtendedData" type="s:boolean" />
|
| 341 |
+
<s:attribute default="false" name="EnhancedData" type="s:boolean" />
|
| 342 |
+
</s:complexType>
|
| 343 |
+
<s:element name="QASearch">
|
| 344 |
+
<s:complexType>
|
| 345 |
+
<s:sequence>
|
| 346 |
+
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
|
| 347 |
+
<s:element minOccurs="0" maxOccurs="1" name="Engine" type="tns:EngineType" />
|
| 348 |
+
<s:element minOccurs="0" maxOccurs="1" name="Layout" type="s:string" />
|
| 349 |
+
<s:element minOccurs="0" maxOccurs="1" name="Search" type="s:string" />
|
| 350 |
+
</s:sequence>
|
| 351 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 352 |
+
</s:complexType>
|
| 353 |
+
</s:element>
|
| 354 |
+
<s:element name="QASearchResult">
|
| 355 |
+
<s:complexType>
|
| 356 |
+
<s:sequence>
|
| 357 |
+
<s:element minOccurs="0" maxOccurs="1" name="QAPicklist" type="tns:QAPicklistType" />
|
| 358 |
+
<s:element minOccurs="0" maxOccurs="1" name="QAAddress" type="tns:QAAddressType" />
|
| 359 |
+
</s:sequence>
|
| 360 |
+
<s:attribute default="None" name="VerifyLevel" type="tns:VerifyLevelType" />
|
| 361 |
+
</s:complexType>
|
| 362 |
+
</s:element>
|
| 363 |
+
<s:simpleType name="VerifyLevelType">
|
| 364 |
+
<s:restriction base="s:string">
|
| 365 |
+
<s:enumeration value="None" />
|
| 366 |
+
<s:enumeration value="Verified" />
|
| 367 |
+
<s:enumeration value="InteractionRequired" />
|
| 368 |
+
<s:enumeration value="PremisesPartial" />
|
| 369 |
+
<s:enumeration value="StreetPartial" />
|
| 370 |
+
<s:enumeration value="Multiple" />
|
| 371 |
+
<s:enumeration value="VerifiedPlace" />
|
| 372 |
+
<s:enumeration value="VerifiedStreet" />
|
| 373 |
+
</s:restriction>
|
| 374 |
+
</s:simpleType>
|
| 375 |
+
<s:element name="QABulkSearch">
|
| 376 |
+
<s:complexType>
|
| 377 |
+
<s:sequence>
|
| 378 |
+
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
|
| 379 |
+
<s:element minOccurs="0" maxOccurs="1" name="Engine" type="tns:EngineType" />
|
| 380 |
+
<s:element minOccurs="0" maxOccurs="1" name="Layout" type="s:string" />
|
| 381 |
+
<s:element minOccurs="0" maxOccurs="1" name="BulkSearchTerm" type="tns:QASearchType" />
|
| 382 |
+
</s:sequence>
|
| 383 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 384 |
+
</s:complexType>
|
| 385 |
+
</s:element>
|
| 386 |
+
<s:complexType name="QASearchType">
|
| 387 |
+
<s:sequence>
|
| 388 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="Search" type="s:string" />
|
| 389 |
+
</s:sequence>
|
| 390 |
+
<s:attribute default="None" name="Count" type="s:string" />
|
| 391 |
+
</s:complexType>
|
| 392 |
+
<s:element name="QABulkSearchResult">
|
| 393 |
+
<s:complexType>
|
| 394 |
+
<s:sequence>
|
| 395 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="BulkAddress" type="tns:QABulkSearchItemType" />
|
| 396 |
+
<s:element minOccurs="0" maxOccurs="1" name="BulkError" type="s:string" />
|
| 397 |
+
<s:element minOccurs="0" maxOccurs="1" name="ErrorCode" type="s:string" />
|
| 398 |
+
</s:sequence>
|
| 399 |
+
<s:attribute default="None" name="Count" type="s:string" />
|
| 400 |
+
<s:attribute default="None" name="SearchCount" type="s:string" />
|
| 401 |
+
</s:complexType>
|
| 402 |
+
</s:element>
|
| 403 |
+
<s:complexType name="QABulkSearchItemType">
|
| 404 |
+
<s:sequence>
|
| 405 |
+
<s:element minOccurs="0" maxOccurs="1" name="QAAddress" type="tns:QAAddressType" />
|
| 406 |
+
<s:element minOccurs="0" maxOccurs="1" name="InputAddress" type="s:string" />
|
| 407 |
+
</s:sequence>
|
| 408 |
+
<s:attribute name="VerifyLevel" type="tns:VerifyLevelType" />
|
| 409 |
+
</s:complexType>
|
| 410 |
+
<s:element name="QAGetDataMapDetail">
|
| 411 |
+
<s:complexType>
|
| 412 |
+
<s:sequence>
|
| 413 |
+
<s:element minOccurs="0" maxOccurs="1" name="DataMap" type="s:string" />
|
| 414 |
+
</s:sequence>
|
| 415 |
+
<s:attribute name="Localisation" type="s:string" />
|
| 416 |
+
</s:complexType>
|
| 417 |
+
</s:element>
|
| 418 |
+
<s:element name="QADataMapDetail">
|
| 419 |
+
<s:complexType>
|
| 420 |
+
<s:sequence>
|
| 421 |
+
<s:element minOccurs="1" maxOccurs="1" name="WarningLevel" type="tns:LicenceWarningLevel" />
|
| 422 |
+
<s:element minOccurs="0" maxOccurs="unbounded" name="LicensedSet" type="tns:QALicensedSet" />
|
| 423 |
+
</s:sequence>
|
| 424 |
+
</s:complexType>
|
| 425 |
+
</s:element>
|
| 426 |
+
</s:schema>
|
| 427 |
+
<s:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
|
| 428 |
+
<s:complexType name="SecurityHeaderType">
|
| 429 |
+
<s:sequence>
|
| 430 |
+
<s:any minOccurs="0" maxOccurs="unbounded" />
|
| 431 |
+
</s:sequence>
|
| 432 |
+
<s:anyAttribute />
|
| 433 |
+
</s:complexType>
|
| 434 |
+
</s:schema>
|
| 435 |
+
</wsdl:types>
|
| 436 |
+
<wsdl:message name="DoCanSearchSoapIn">
|
| 437 |
+
<wsdl:part name="QACanSearch" element="tns:QACanSearch" />
|
| 438 |
+
</wsdl:message>
|
| 439 |
+
<wsdl:message name="DoCanSearchSoapOut">
|
| 440 |
+
<wsdl:part name="DoCanSearchResult" element="tns:QASearchOk" />
|
| 441 |
+
</wsdl:message>
|
| 442 |
+
<wsdl:message name="DoCanSearchQAInformation">
|
| 443 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 444 |
+
</wsdl:message>
|
| 445 |
+
<wsdl:message name="DoCanSearchQAQueryHeader">
|
| 446 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 447 |
+
</wsdl:message>
|
| 448 |
+
<wsdl:message name="DoGetAddressSoapIn">
|
| 449 |
+
<wsdl:part name="QAGetAddress" element="tns:QAGetAddress" />
|
| 450 |
+
</wsdl:message>
|
| 451 |
+
<wsdl:message name="DoGetAddressSoapOut">
|
| 452 |
+
<wsdl:part name="DoGetAddressResult" element="tns:Address" />
|
| 453 |
+
</wsdl:message>
|
| 454 |
+
<wsdl:message name="DoGetAddressQAInformation">
|
| 455 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 456 |
+
</wsdl:message>
|
| 457 |
+
<wsdl:message name="DoGetAddressQAQueryHeader">
|
| 458 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 459 |
+
</wsdl:message>
|
| 460 |
+
<wsdl:message name="DoGetDataSoapIn">
|
| 461 |
+
<wsdl:part name="QAGetData" element="tns:QAGetData" />
|
| 462 |
+
</wsdl:message>
|
| 463 |
+
<wsdl:message name="DoGetDataSoapOut">
|
| 464 |
+
<wsdl:part name="DoGetDataResult" element="tns:QAData" />
|
| 465 |
+
</wsdl:message>
|
| 466 |
+
<wsdl:message name="DoGetDataQAInformation">
|
| 467 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 468 |
+
</wsdl:message>
|
| 469 |
+
<wsdl:message name="DoGetDataQAQueryHeader">
|
| 470 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 471 |
+
</wsdl:message>
|
| 472 |
+
<wsdl:message name="DoGetExampleAddressesSoapIn">
|
| 473 |
+
<wsdl:part name="QAGetExampleAddresses" element="tns:QAGetExampleAddresses" />
|
| 474 |
+
</wsdl:message>
|
| 475 |
+
<wsdl:message name="DoGetExampleAddressesSoapOut">
|
| 476 |
+
<wsdl:part name="DoGetExampleAddressesResult" element="tns:QAExampleAddresses" />
|
| 477 |
+
</wsdl:message>
|
| 478 |
+
<wsdl:message name="DoGetExampleAddressesQAInformation">
|
| 479 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 480 |
+
</wsdl:message>
|
| 481 |
+
<wsdl:message name="DoGetExampleAddressesQAQueryHeader">
|
| 482 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 483 |
+
</wsdl:message>
|
| 484 |
+
<wsdl:message name="DoGetLayoutsSoapIn">
|
| 485 |
+
<wsdl:part name="QAGetLayouts" element="tns:QAGetLayouts" />
|
| 486 |
+
</wsdl:message>
|
| 487 |
+
<wsdl:message name="DoGetLayoutsSoapOut">
|
| 488 |
+
<wsdl:part name="DoGetLayoutsResult" element="tns:QALayouts" />
|
| 489 |
+
</wsdl:message>
|
| 490 |
+
<wsdl:message name="DoGetLayoutsQAInformation">
|
| 491 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 492 |
+
</wsdl:message>
|
| 493 |
+
<wsdl:message name="DoGetLayoutsQAQueryHeader">
|
| 494 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 495 |
+
</wsdl:message>
|
| 496 |
+
<wsdl:message name="DoGetLicenseInfoSoapIn">
|
| 497 |
+
<wsdl:part name="QAGetLicenseInfo" element="tns:QAGetLicenseInfo" />
|
| 498 |
+
</wsdl:message>
|
| 499 |
+
<wsdl:message name="DoGetLicenseInfoSoapOut">
|
| 500 |
+
<wsdl:part name="DoGetLicenseInfoResult" element="tns:QALicenceInfo" />
|
| 501 |
+
</wsdl:message>
|
| 502 |
+
<wsdl:message name="DoGetLicenseInfoQAInformation">
|
| 503 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 504 |
+
</wsdl:message>
|
| 505 |
+
<wsdl:message name="DoGetLicenseInfoQAQueryHeader">
|
| 506 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 507 |
+
</wsdl:message>
|
| 508 |
+
<wsdl:message name="DoGetPromptSetSoapIn">
|
| 509 |
+
<wsdl:part name="QAGetPromptSet" element="tns:QAGetPromptSet" />
|
| 510 |
+
</wsdl:message>
|
| 511 |
+
<wsdl:message name="DoGetPromptSetSoapOut">
|
| 512 |
+
<wsdl:part name="DoGetPromptSetResult" element="tns:QAPromptSet" />
|
| 513 |
+
</wsdl:message>
|
| 514 |
+
<wsdl:message name="DoGetPromptSetQAInformation">
|
| 515 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 516 |
+
</wsdl:message>
|
| 517 |
+
<wsdl:message name="DoGetPromptSetQAQueryHeader">
|
| 518 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 519 |
+
</wsdl:message>
|
| 520 |
+
<wsdl:message name="DoGetSystemInfoSoapIn">
|
| 521 |
+
<wsdl:part name="QAGetSystemInfo" element="tns:QAGetSystemInfo" />
|
| 522 |
+
</wsdl:message>
|
| 523 |
+
<wsdl:message name="DoGetSystemInfoSoapOut">
|
| 524 |
+
<wsdl:part name="DoGetSystemInfoResult" element="tns:QASystemInfo" />
|
| 525 |
+
</wsdl:message>
|
| 526 |
+
<wsdl:message name="DoGetSystemInfoQAInformation">
|
| 527 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 528 |
+
</wsdl:message>
|
| 529 |
+
<wsdl:message name="DoGetSystemInfoQAQueryHeader">
|
| 530 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 531 |
+
</wsdl:message>
|
| 532 |
+
<wsdl:message name="DoRefineSoapIn">
|
| 533 |
+
<wsdl:part name="QARefine" element="tns:QARefine" />
|
| 534 |
+
</wsdl:message>
|
| 535 |
+
<wsdl:message name="DoRefineSoapOut">
|
| 536 |
+
<wsdl:part name="DoRefineResult" element="tns:Picklist" />
|
| 537 |
+
</wsdl:message>
|
| 538 |
+
<wsdl:message name="DoRefineQAInformation">
|
| 539 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 540 |
+
</wsdl:message>
|
| 541 |
+
<wsdl:message name="DoRefineQAQueryHeader">
|
| 542 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 543 |
+
</wsdl:message>
|
| 544 |
+
<wsdl:message name="DoSearchSoapIn">
|
| 545 |
+
<wsdl:part name="QASearch" element="tns:QASearch" />
|
| 546 |
+
</wsdl:message>
|
| 547 |
+
<wsdl:message name="DoSearchSoapOut">
|
| 548 |
+
<wsdl:part name="DoSearchResult" element="tns:QASearchResult" />
|
| 549 |
+
</wsdl:message>
|
| 550 |
+
<wsdl:message name="DoSearchQAInformation">
|
| 551 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 552 |
+
</wsdl:message>
|
| 553 |
+
<wsdl:message name="DoSearchQAQueryHeader">
|
| 554 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 555 |
+
</wsdl:message>
|
| 556 |
+
<wsdl:message name="DoBulkSearchSoapIn">
|
| 557 |
+
<wsdl:part name="QABulkSearch" element="tns:QABulkSearch" />
|
| 558 |
+
</wsdl:message>
|
| 559 |
+
<wsdl:message name="DoBulkSearchSoapOut">
|
| 560 |
+
<wsdl:part name="DoBulkSearchResult" element="tns:QABulkSearchResult" />
|
| 561 |
+
</wsdl:message>
|
| 562 |
+
<wsdl:message name="DoBulkSearchQAInformation">
|
| 563 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 564 |
+
</wsdl:message>
|
| 565 |
+
<wsdl:message name="DoBulkSearchQAQueryHeader">
|
| 566 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 567 |
+
</wsdl:message>
|
| 568 |
+
<wsdl:message name="DoGetDataMapDetailSoapIn">
|
| 569 |
+
<wsdl:part name="QAGetDataMapDetail" element="tns:QAGetDataMapDetail" />
|
| 570 |
+
</wsdl:message>
|
| 571 |
+
<wsdl:message name="DoGetDataMapDetailSoapOut">
|
| 572 |
+
<wsdl:part name="DoGetDataMapDetailResult" element="tns:QADataMapDetail" />
|
| 573 |
+
</wsdl:message>
|
| 574 |
+
<wsdl:message name="DoGetDataMapDetailQAInformation">
|
| 575 |
+
<wsdl:part name="QAInformation" element="tns:QAInformation" />
|
| 576 |
+
</wsdl:message>
|
| 577 |
+
<wsdl:message name="DoGetDataMapDetailQAQueryHeader">
|
| 578 |
+
<wsdl:part name="QAQueryHeader" element="tns:QAQueryHeader" />
|
| 579 |
+
</wsdl:message>
|
| 580 |
+
<wsdl:portType name="QASOnDemand">
|
| 581 |
+
<wsdl:operation name="DoCanSearch">
|
| 582 |
+
<wsdl:input message="tns:DoCanSearchSoapIn" />
|
| 583 |
+
<wsdl:output message="tns:DoCanSearchSoapOut" />
|
| 584 |
+
</wsdl:operation>
|
| 585 |
+
<wsdl:operation name="DoGetAddress">
|
| 586 |
+
<wsdl:input message="tns:DoGetAddressSoapIn" />
|
| 587 |
+
<wsdl:output message="tns:DoGetAddressSoapOut" />
|
| 588 |
+
</wsdl:operation>
|
| 589 |
+
<wsdl:operation name="DoGetData">
|
| 590 |
+
<wsdl:input message="tns:DoGetDataSoapIn" />
|
| 591 |
+
<wsdl:output message="tns:DoGetDataSoapOut" />
|
| 592 |
+
</wsdl:operation>
|
| 593 |
+
<wsdl:operation name="DoGetExampleAddresses">
|
| 594 |
+
<wsdl:input message="tns:DoGetExampleAddressesSoapIn" />
|
| 595 |
+
<wsdl:output message="tns:DoGetExampleAddressesSoapOut" />
|
| 596 |
+
</wsdl:operation>
|
| 597 |
+
<wsdl:operation name="DoGetLayouts">
|
| 598 |
+
<wsdl:input message="tns:DoGetLayoutsSoapIn" />
|
| 599 |
+
<wsdl:output message="tns:DoGetLayoutsSoapOut" />
|
| 600 |
+
</wsdl:operation>
|
| 601 |
+
<wsdl:operation name="DoGetLicenseInfo">
|
| 602 |
+
<wsdl:input message="tns:DoGetLicenseInfoSoapIn" />
|
| 603 |
+
<wsdl:output message="tns:DoGetLicenseInfoSoapOut" />
|
| 604 |
+
</wsdl:operation>
|
| 605 |
+
<wsdl:operation name="DoGetPromptSet">
|
| 606 |
+
<wsdl:input message="tns:DoGetPromptSetSoapIn" />
|
| 607 |
+
<wsdl:output message="tns:DoGetPromptSetSoapOut" />
|
| 608 |
+
</wsdl:operation>
|
| 609 |
+
<wsdl:operation name="DoGetSystemInfo">
|
| 610 |
+
<wsdl:input message="tns:DoGetSystemInfoSoapIn" />
|
| 611 |
+
<wsdl:output message="tns:DoGetSystemInfoSoapOut" />
|
| 612 |
+
</wsdl:operation>
|
| 613 |
+
<wsdl:operation name="DoRefine">
|
| 614 |
+
<wsdl:input message="tns:DoRefineSoapIn" />
|
| 615 |
+
<wsdl:output message="tns:DoRefineSoapOut" />
|
| 616 |
+
</wsdl:operation>
|
| 617 |
+
<wsdl:operation name="DoSearch">
|
| 618 |
+
<wsdl:input message="tns:DoSearchSoapIn" />
|
| 619 |
+
<wsdl:output message="tns:DoSearchSoapOut" />
|
| 620 |
+
</wsdl:operation>
|
| 621 |
+
<wsdl:operation name="DoBulkSearch">
|
| 622 |
+
<wsdl:input message="tns:DoBulkSearchSoapIn" />
|
| 623 |
+
<wsdl:output message="tns:DoBulkSearchSoapOut" />
|
| 624 |
+
</wsdl:operation>
|
| 625 |
+
<wsdl:operation name="DoGetDataMapDetail">
|
| 626 |
+
<wsdl:input message="tns:DoGetDataMapDetailSoapIn" />
|
| 627 |
+
<wsdl:output message="tns:DoGetDataMapDetailSoapOut" />
|
| 628 |
+
</wsdl:operation>
|
| 629 |
+
</wsdl:portType>
|
| 630 |
+
<wsdl:binding name="QASOnDemand" type="tns:QASOnDemand">
|
| 631 |
+
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
| 632 |
+
<wsdl:operation name="DoCanSearch">
|
| 633 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoCanSearch" style="document" />
|
| 634 |
+
<wsdl:input>
|
| 635 |
+
<soap:body use="literal" />
|
| 636 |
+
<soap:header message="tns:DoCanSearchQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 637 |
+
</wsdl:input>
|
| 638 |
+
<wsdl:output>
|
| 639 |
+
<soap:body use="literal" />
|
| 640 |
+
<soap:header message="tns:DoCanSearchQAInformation" part="QAInformation" use="literal" />
|
| 641 |
+
</wsdl:output>
|
| 642 |
+
</wsdl:operation>
|
| 643 |
+
<wsdl:operation name="DoGetAddress">
|
| 644 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetAddress" style="document" />
|
| 645 |
+
<wsdl:input>
|
| 646 |
+
<soap:body use="literal" />
|
| 647 |
+
<soap:header message="tns:DoGetAddressQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 648 |
+
</wsdl:input>
|
| 649 |
+
<wsdl:output>
|
| 650 |
+
<soap:body use="literal" />
|
| 651 |
+
<soap:header message="tns:DoGetAddressQAInformation" part="QAInformation" use="literal" />
|
| 652 |
+
</wsdl:output>
|
| 653 |
+
</wsdl:operation>
|
| 654 |
+
<wsdl:operation name="DoGetData">
|
| 655 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetData" style="document" />
|
| 656 |
+
<wsdl:input>
|
| 657 |
+
<soap:body use="literal" />
|
| 658 |
+
<soap:header message="tns:DoGetDataQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 659 |
+
</wsdl:input>
|
| 660 |
+
<wsdl:output>
|
| 661 |
+
<soap:body use="literal" />
|
| 662 |
+
<soap:header message="tns:DoGetDataQAInformation" part="QAInformation" use="literal" />
|
| 663 |
+
</wsdl:output>
|
| 664 |
+
</wsdl:operation>
|
| 665 |
+
<wsdl:operation name="DoGetExampleAddresses">
|
| 666 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetExampleAddresses" style="document" />
|
| 667 |
+
<wsdl:input>
|
| 668 |
+
<soap:body use="literal" />
|
| 669 |
+
<soap:header message="tns:DoGetExampleAddressesQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 670 |
+
</wsdl:input>
|
| 671 |
+
<wsdl:output>
|
| 672 |
+
<soap:body use="literal" />
|
| 673 |
+
<soap:header message="tns:DoGetExampleAddressesQAInformation" part="QAInformation" use="literal" />
|
| 674 |
+
</wsdl:output>
|
| 675 |
+
</wsdl:operation>
|
| 676 |
+
<wsdl:operation name="DoGetLayouts">
|
| 677 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetLayouts" style="document" />
|
| 678 |
+
<wsdl:input>
|
| 679 |
+
<soap:body use="literal" />
|
| 680 |
+
<soap:header message="tns:DoGetLayoutsQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 681 |
+
</wsdl:input>
|
| 682 |
+
<wsdl:output>
|
| 683 |
+
<soap:body use="literal" />
|
| 684 |
+
<soap:header message="tns:DoGetLayoutsQAInformation" part="QAInformation" use="literal" />
|
| 685 |
+
</wsdl:output>
|
| 686 |
+
</wsdl:operation>
|
| 687 |
+
<wsdl:operation name="DoGetLicenseInfo">
|
| 688 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetLicenseInfo" style="document" />
|
| 689 |
+
<wsdl:input>
|
| 690 |
+
<soap:body use="literal" />
|
| 691 |
+
<soap:header message="tns:DoGetLicenseInfoQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 692 |
+
</wsdl:input>
|
| 693 |
+
<wsdl:output>
|
| 694 |
+
<soap:body use="literal" />
|
| 695 |
+
<soap:header message="tns:DoGetLicenseInfoQAInformation" part="QAInformation" use="literal" />
|
| 696 |
+
</wsdl:output>
|
| 697 |
+
</wsdl:operation>
|
| 698 |
+
<wsdl:operation name="DoGetPromptSet">
|
| 699 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetPromptSet" style="document" />
|
| 700 |
+
<wsdl:input>
|
| 701 |
+
<soap:body use="literal" />
|
| 702 |
+
<soap:header message="tns:DoGetPromptSetQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 703 |
+
</wsdl:input>
|
| 704 |
+
<wsdl:output>
|
| 705 |
+
<soap:body use="literal" />
|
| 706 |
+
<soap:header message="tns:DoGetPromptSetQAInformation" part="QAInformation" use="literal" />
|
| 707 |
+
</wsdl:output>
|
| 708 |
+
</wsdl:operation>
|
| 709 |
+
<wsdl:operation name="DoGetSystemInfo">
|
| 710 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetSystemInfo" style="document" />
|
| 711 |
+
<wsdl:input>
|
| 712 |
+
<soap:body use="literal" />
|
| 713 |
+
<soap:header message="tns:DoGetSystemInfoQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 714 |
+
</wsdl:input>
|
| 715 |
+
<wsdl:output>
|
| 716 |
+
<soap:body use="literal" />
|
| 717 |
+
<soap:header message="tns:DoGetSystemInfoQAInformation" part="QAInformation" use="literal" />
|
| 718 |
+
</wsdl:output>
|
| 719 |
+
</wsdl:operation>
|
| 720 |
+
<wsdl:operation name="DoRefine">
|
| 721 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoRefine" style="document" />
|
| 722 |
+
<wsdl:input>
|
| 723 |
+
<soap:body use="literal" />
|
| 724 |
+
<soap:header message="tns:DoRefineQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 725 |
+
</wsdl:input>
|
| 726 |
+
<wsdl:output>
|
| 727 |
+
<soap:body use="literal" />
|
| 728 |
+
<soap:header message="tns:DoRefineQAInformation" part="QAInformation" use="literal" />
|
| 729 |
+
</wsdl:output>
|
| 730 |
+
</wsdl:operation>
|
| 731 |
+
<wsdl:operation name="DoSearch">
|
| 732 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoSearch" style="document" />
|
| 733 |
+
<wsdl:input>
|
| 734 |
+
<soap:body use="literal" />
|
| 735 |
+
<soap:header message="tns:DoSearchQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 736 |
+
</wsdl:input>
|
| 737 |
+
<wsdl:output>
|
| 738 |
+
<soap:body use="literal" />
|
| 739 |
+
<soap:header message="tns:DoSearchQAInformation" part="QAInformation" use="literal" />
|
| 740 |
+
</wsdl:output>
|
| 741 |
+
</wsdl:operation>
|
| 742 |
+
<wsdl:operation name="DoBulkSearch">
|
| 743 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoBulkSearch" style="document" />
|
| 744 |
+
<wsdl:input>
|
| 745 |
+
<soap:body use="literal" />
|
| 746 |
+
<soap:header message="tns:DoBulkSearchQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 747 |
+
</wsdl:input>
|
| 748 |
+
<wsdl:output>
|
| 749 |
+
<soap:body use="literal" />
|
| 750 |
+
<soap:header message="tns:DoBulkSearchQAInformation" part="QAInformation" use="literal" />
|
| 751 |
+
</wsdl:output>
|
| 752 |
+
</wsdl:operation>
|
| 753 |
+
<wsdl:operation name="DoGetDataMapDetail">
|
| 754 |
+
<soap:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetDataMapDetail" style="document" />
|
| 755 |
+
<wsdl:input>
|
| 756 |
+
<soap:body use="literal" />
|
| 757 |
+
<soap:header message="tns:DoGetDataMapDetailQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 758 |
+
</wsdl:input>
|
| 759 |
+
<wsdl:output>
|
| 760 |
+
<soap:body use="literal" />
|
| 761 |
+
<soap:header message="tns:DoGetDataMapDetailQAInformation" part="QAInformation" use="literal" />
|
| 762 |
+
</wsdl:output>
|
| 763 |
+
</wsdl:operation>
|
| 764 |
+
</wsdl:binding>
|
| 765 |
+
<wsdl:binding name="QASOnDemand1" type="tns:QASOnDemand">
|
| 766 |
+
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
| 767 |
+
<wsdl:operation name="DoCanSearch">
|
| 768 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoCanSearch" style="document" />
|
| 769 |
+
<wsdl:input>
|
| 770 |
+
<soap12:body use="literal" />
|
| 771 |
+
<soap12:header message="tns:DoCanSearchQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 772 |
+
</wsdl:input>
|
| 773 |
+
<wsdl:output>
|
| 774 |
+
<soap12:body use="literal" />
|
| 775 |
+
<soap12:header message="tns:DoCanSearchQAInformation" part="QAInformation" use="literal" />
|
| 776 |
+
</wsdl:output>
|
| 777 |
+
</wsdl:operation>
|
| 778 |
+
<wsdl:operation name="DoGetAddress">
|
| 779 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetAddress" style="document" />
|
| 780 |
+
<wsdl:input>
|
| 781 |
+
<soap12:body use="literal" />
|
| 782 |
+
<soap12:header message="tns:DoGetAddressQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 783 |
+
</wsdl:input>
|
| 784 |
+
<wsdl:output>
|
| 785 |
+
<soap12:body use="literal" />
|
| 786 |
+
<soap12:header message="tns:DoGetAddressQAInformation" part="QAInformation" use="literal" />
|
| 787 |
+
</wsdl:output>
|
| 788 |
+
</wsdl:operation>
|
| 789 |
+
<wsdl:operation name="DoGetData">
|
| 790 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetData" style="document" />
|
| 791 |
+
<wsdl:input>
|
| 792 |
+
<soap12:body use="literal" />
|
| 793 |
+
<soap12:header message="tns:DoGetDataQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 794 |
+
</wsdl:input>
|
| 795 |
+
<wsdl:output>
|
| 796 |
+
<soap12:body use="literal" />
|
| 797 |
+
<soap12:header message="tns:DoGetDataQAInformation" part="QAInformation" use="literal" />
|
| 798 |
+
</wsdl:output>
|
| 799 |
+
</wsdl:operation>
|
| 800 |
+
<wsdl:operation name="DoGetExampleAddresses">
|
| 801 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetExampleAddresses" style="document" />
|
| 802 |
+
<wsdl:input>
|
| 803 |
+
<soap12:body use="literal" />
|
| 804 |
+
<soap12:header message="tns:DoGetExampleAddressesQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 805 |
+
</wsdl:input>
|
| 806 |
+
<wsdl:output>
|
| 807 |
+
<soap12:body use="literal" />
|
| 808 |
+
<soap12:header message="tns:DoGetExampleAddressesQAInformation" part="QAInformation" use="literal" />
|
| 809 |
+
</wsdl:output>
|
| 810 |
+
</wsdl:operation>
|
| 811 |
+
<wsdl:operation name="DoGetLayouts">
|
| 812 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetLayouts" style="document" />
|
| 813 |
+
<wsdl:input>
|
| 814 |
+
<soap12:body use="literal" />
|
| 815 |
+
<soap12:header message="tns:DoGetLayoutsQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 816 |
+
</wsdl:input>
|
| 817 |
+
<wsdl:output>
|
| 818 |
+
<soap12:body use="literal" />
|
| 819 |
+
<soap12:header message="tns:DoGetLayoutsQAInformation" part="QAInformation" use="literal" />
|
| 820 |
+
</wsdl:output>
|
| 821 |
+
</wsdl:operation>
|
| 822 |
+
<wsdl:operation name="DoGetLicenseInfo">
|
| 823 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetLicenseInfo" style="document" />
|
| 824 |
+
<wsdl:input>
|
| 825 |
+
<soap12:body use="literal" />
|
| 826 |
+
<soap12:header message="tns:DoGetLicenseInfoQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 827 |
+
</wsdl:input>
|
| 828 |
+
<wsdl:output>
|
| 829 |
+
<soap12:body use="literal" />
|
| 830 |
+
<soap12:header message="tns:DoGetLicenseInfoQAInformation" part="QAInformation" use="literal" />
|
| 831 |
+
</wsdl:output>
|
| 832 |
+
</wsdl:operation>
|
| 833 |
+
<wsdl:operation name="DoGetPromptSet">
|
| 834 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetPromptSet" style="document" />
|
| 835 |
+
<wsdl:input>
|
| 836 |
+
<soap12:body use="literal" />
|
| 837 |
+
<soap12:header message="tns:DoGetPromptSetQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 838 |
+
</wsdl:input>
|
| 839 |
+
<wsdl:output>
|
| 840 |
+
<soap12:body use="literal" />
|
| 841 |
+
<soap12:header message="tns:DoGetPromptSetQAInformation" part="QAInformation" use="literal" />
|
| 842 |
+
</wsdl:output>
|
| 843 |
+
</wsdl:operation>
|
| 844 |
+
<wsdl:operation name="DoGetSystemInfo">
|
| 845 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetSystemInfo" style="document" />
|
| 846 |
+
<wsdl:input>
|
| 847 |
+
<soap12:body use="literal" />
|
| 848 |
+
<soap12:header message="tns:DoGetSystemInfoQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 849 |
+
</wsdl:input>
|
| 850 |
+
<wsdl:output>
|
| 851 |
+
<soap12:body use="literal" />
|
| 852 |
+
<soap12:header message="tns:DoGetSystemInfoQAInformation" part="QAInformation" use="literal" />
|
| 853 |
+
</wsdl:output>
|
| 854 |
+
</wsdl:operation>
|
| 855 |
+
<wsdl:operation name="DoRefine">
|
| 856 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoRefine" style="document" />
|
| 857 |
+
<wsdl:input>
|
| 858 |
+
<soap12:body use="literal" />
|
| 859 |
+
<soap12:header message="tns:DoRefineQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 860 |
+
</wsdl:input>
|
| 861 |
+
<wsdl:output>
|
| 862 |
+
<soap12:body use="literal" />
|
| 863 |
+
<soap12:header message="tns:DoRefineQAInformation" part="QAInformation" use="literal" />
|
| 864 |
+
</wsdl:output>
|
| 865 |
+
</wsdl:operation>
|
| 866 |
+
<wsdl:operation name="DoSearch">
|
| 867 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoSearch" style="document" />
|
| 868 |
+
<wsdl:input>
|
| 869 |
+
<soap12:body use="literal" />
|
| 870 |
+
<soap12:header message="tns:DoSearchQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 871 |
+
</wsdl:input>
|
| 872 |
+
<wsdl:output>
|
| 873 |
+
<soap12:body use="literal" />
|
| 874 |
+
<soap12:header message="tns:DoSearchQAInformation" part="QAInformation" use="literal" />
|
| 875 |
+
</wsdl:output>
|
| 876 |
+
</wsdl:operation>
|
| 877 |
+
<wsdl:operation name="DoBulkSearch">
|
| 878 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoBulkSearch" style="document" />
|
| 879 |
+
<wsdl:input>
|
| 880 |
+
<soap12:body use="literal" />
|
| 881 |
+
<soap12:header message="tns:DoBulkSearchQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 882 |
+
</wsdl:input>
|
| 883 |
+
<wsdl:output>
|
| 884 |
+
<soap12:body use="literal" />
|
| 885 |
+
<soap12:header message="tns:DoBulkSearchQAInformation" part="QAInformation" use="literal" />
|
| 886 |
+
</wsdl:output>
|
| 887 |
+
</wsdl:operation>
|
| 888 |
+
<wsdl:operation name="DoGetDataMapDetail">
|
| 889 |
+
<soap12:operation soapAction="http://www.qas.com/OnDemand-2011-03/DoGetDataMapDetail" style="document" />
|
| 890 |
+
<wsdl:input>
|
| 891 |
+
<soap12:body use="literal" />
|
| 892 |
+
<soap12:header message="tns:DoGetDataMapDetailQAQueryHeader" part="QAQueryHeader" use="literal" />
|
| 893 |
+
</wsdl:input>
|
| 894 |
+
<wsdl:output>
|
| 895 |
+
<soap12:body use="literal" />
|
| 896 |
+
<soap12:header message="tns:DoGetDataMapDetailQAInformation" part="QAInformation" use="literal" />
|
| 897 |
+
</wsdl:output>
|
| 898 |
+
</wsdl:operation>
|
| 899 |
+
</wsdl:binding>
|
| 900 |
+
<wsdl:service name="OnDemandIntermediaryV3">
|
| 901 |
+
<wsdl:port name="QASOnDemand" binding="tns:QASOnDemand">
|
| 902 |
+
<soap:address location="https://ws.ondemand.qas.com/ProOnDemand/V3/ProOnDemandService.asmx" />
|
| 903 |
+
</wsdl:port>
|
| 904 |
+
<wsdl:port name="QASOnDemand1" binding="tns:QASOnDemand1">
|
| 905 |
+
<soap12:address location="https://ws.ondemand.qas.com/ProOnDemand/V3/ProOnDemandService.asmx" />
|
| 906 |
+
</wsdl:port>
|
| 907 |
+
</wsdl:service>
|
| 908 |
+
</wsdl:definitions>
|
app/code/community/Experian/Qas/sql/qas_setup/mysql4-install-0.0.1.php
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Magento Enterprise Edition
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Magento Enterprise Edition License
|
| 8 |
+
* that is bundled with this package in the file LICENSE_EE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://www.magentocommerce.com/license/enterprise-edition
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* @category Mage
|
| 22 |
+
* @package Mage_Checkout
|
| 23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
| 24 |
+
* @license http://www.magentocommerce.com/license/enterprise-edition
|
| 25 |
+
*/
|
| 26 |
+
|
| 27 |
+
$installer = $this;
|
| 28 |
+
/* @var $installer Mage_Core_Model_Resource_Setup */
|
| 29 |
+
|
| 30 |
+
$installer->startSetup();
|
| 31 |
+
|
| 32 |
+
$this->addAttribute('customer_address', 'missing_verification', array(
|
| 33 |
+
'type' => 'int',
|
| 34 |
+
'input' => 'select',
|
| 35 |
+
'source' => 'eav/entity_attribute_source_boolean',
|
| 36 |
+
'label' => 'Missing Verification',
|
| 37 |
+
'global' => 1,
|
| 38 |
+
'visible' => 0,
|
| 39 |
+
'required' => 0,
|
| 40 |
+
'user_defined' => 1,
|
| 41 |
+
'visible_on_front' => 0
|
| 42 |
+
));
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
$eavConfig = Mage::getSingleton('eav/config');
|
| 46 |
+
$attribute = $eavConfig->getAttribute('customer_address', 'missing_verification');
|
| 47 |
+
$attribute->setData('used_in_forms', array('adminhtml_customer_address'));
|
| 48 |
+
$attribute->save();
|
| 49 |
+
|
| 50 |
+
/**
|
| 51 |
+
* Add missing_verification column in sales_flat_quote_address table
|
| 52 |
+
**/
|
| 53 |
+
$installer->getConnection()->addColumn(
|
| 54 |
+
$installer->getTable('sales_flat_quote_address'),
|
| 55 |
+
'missing_verification',
|
| 56 |
+
'int(2) NULL DEFAULT NULL'
|
| 57 |
+
);
|
| 58 |
+
|
| 59 |
+
/**
|
| 60 |
+
* Add missing_verification column in sales_flat_order_address table
|
| 61 |
+
**/
|
| 62 |
+
$installer->getConnection()->addColumn(
|
| 63 |
+
$installer->getTable('sales_flat_order_address'),
|
| 64 |
+
'missing_verification',
|
| 65 |
+
'int(2) NULL DEFAULT NULL'
|
| 66 |
+
);
|
| 67 |
+
|
| 68 |
+
$installer->endSetup();
|
app/design/frontend/base/default/layout/experian_qas.xml
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" ?>
|
| 2 |
+
<layout version="0.1.0">
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
<default>
|
| 6 |
+
<reference name="head">
|
| 7 |
+
<action method="addCss"><stylesheet>qas/css/styles.css</stylesheet></action>
|
| 8 |
+
</reference>
|
| 9 |
+
<reference name="footer">
|
| 10 |
+
<block type="core/template" name="qas_email_validate" template="qas/email_validate.phtml"/>
|
| 11 |
+
</reference>
|
| 12 |
+
</default>
|
| 13 |
+
|
| 14 |
+
<checkout_onepage_index>
|
| 15 |
+
<reference name="head">
|
| 16 |
+
<action method="addItem"><type>skin_js</type><name>qas/js/intuitive.js</name></action>
|
| 17 |
+
<action method="addItem"><type>skin_js</type><name>qas/js/searchengine.js</name></action>
|
| 18 |
+
</reference>
|
| 19 |
+
<reference name="before_body_end">
|
| 20 |
+
<block type="experian_qas/addressField_billing" name="qas_intuitive_billing" template="qas/intuitive.phtml" />
|
| 21 |
+
<block type="experian_qas/addressField_shipping" name="qas_intuitive_shipping" template="qas/intuitive.phtml" />
|
| 22 |
+
<block type="experian_qas/addressField_billing" name="checkout_onepage_qas_billing" template="qas/checkout/billing.phtml"/>
|
| 23 |
+
<block type="experian_qas/addressField_shipping" name="checkout_onepage_qas_shipping" template="qas/checkout/shipping.phtml"/>
|
| 24 |
+
</reference>
|
| 25 |
+
</checkout_onepage_index>
|
| 26 |
+
|
| 27 |
+
<customer_address_form>
|
| 28 |
+
<reference name="head">
|
| 29 |
+
<action method="addItem"><type>skin_js</type><name>qas/js/intuitive.js</name></action>
|
| 30 |
+
<action method="addItem"><type>skin_js</type><name>qas/js/searchengine.js</name></action>
|
| 31 |
+
</reference>
|
| 32 |
+
<reference name="before_body_end">
|
| 33 |
+
<block type="experian_qas/addressField" name="qas_search_engine" template="qas/customer/address/edit.phtml"/>
|
| 34 |
+
<block type="experian_qas/addressField" name="qas_intuitive" template="qas/intuitive.phtml" />
|
| 35 |
+
</reference>
|
| 36 |
+
</customer_address_form>
|
| 37 |
+
|
| 38 |
+
</layout>
|
app/design/frontend/base/default/template/qas/checkout/billing.phtml
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php $helper = Mage::helper('experian_qas'); ?>
|
| 2 |
+
<?php if ($helper->isSearchEngineEnabled()): ?>
|
| 3 |
+
<?php
|
| 4 |
+
//code popin factorization
|
| 5 |
+
echo $this->getLayout()->createBlock('core/template')->setTemplate('qas/popin.phtml')->setAlias('billing')->toHtml();
|
| 6 |
+
|
| 7 |
+
?>
|
| 8 |
+
|
| 9 |
+
<script type="text/javascript">
|
| 10 |
+
//<![CDATA[
|
| 11 |
+
var interactionWindowBilling = $('interactionWindowBilling');
|
| 12 |
+
var interactionWindowBillingMask = $('interactionWindowBilling-mask');
|
| 13 |
+
var interactionWindowBillingContent = $('interactionWindowContentBilling');
|
| 14 |
+
var keepBillingAddress = false;
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
function leaveBillingAddress(){
|
| 18 |
+
interactionWindowBilling.hide();
|
| 19 |
+
interactionWindowBillingMask.hide();
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
function keepMyBillingAddress(){
|
| 23 |
+
keepBillingAddress = true;
|
| 24 |
+
interactionWindowBilling.hide();
|
| 25 |
+
interactionWindowBillingMask.hide();
|
| 26 |
+
billing.save();
|
| 27 |
+
keepBillingAddress = false;
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
function selectBillingAddress() {
|
| 31 |
+
var billingForm = new VarienForm('<?php echo Experian_Qas_Block_Interaction::INTERACTION_FORM_NAME ?>Billing');
|
| 32 |
+
var validator = new Validation(billingForm.form);
|
| 33 |
+
|
| 34 |
+
if (validator.validate()) {
|
| 35 |
+
new Ajax.Request(
|
| 36 |
+
'<?php echo Mage::getUrl('qas/process/normalizeAddress') ?>',
|
| 37 |
+
{
|
| 38 |
+
method: 'post',
|
| 39 |
+
parameters: Form.serialize($('<?php echo Experian_Qas_Block_Interaction::INTERACTION_FORM_NAME ?>Billing')),
|
| 40 |
+
onComplete: function() {
|
| 41 |
+
saveAddress(billing, 'billing');
|
| 42 |
+
},
|
| 43 |
+
onFailure: function(response){
|
| 44 |
+
alert('An error occurred while processing your request');
|
| 45 |
+
this.onComplete;
|
| 46 |
+
},
|
| 47 |
+
onSuccess: function(response){
|
| 48 |
+
if (response && response.responseText){
|
| 49 |
+
interactionWindowBilling.hide();
|
| 50 |
+
interactionWindowBillingMask.hide();
|
| 51 |
+
if (typeof(response.responseText) == 'string') {
|
| 52 |
+
eval('result = ' + response.responseText);
|
| 53 |
+
}
|
| 54 |
+
//for region input
|
| 55 |
+
<?php $inputType = 'text';?>
|
| 56 |
+
|
| 57 |
+
if(!isNaN(result.region)) {
|
| 58 |
+
<?php $inputType = 'select';?>
|
| 59 |
+
var current_select = $('<?php echo $this->getRegion() ?>');
|
| 60 |
+
var current_non = current_select.select('option[value="'+result.region+'"]');
|
| 61 |
+
var options = current_select.select("option");
|
| 62 |
+
if (current_non[0]) {
|
| 63 |
+
options.each(function(item)
|
| 64 |
+
{
|
| 65 |
+
if(item.value == current_non[0].value)
|
| 66 |
+
{
|
| 67 |
+
item.selected = true;
|
| 68 |
+
}
|
| 69 |
+
});
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
}
|
| 73 |
+
$('<?php echo $this->getStreet1() ?>').value = result.street_1;
|
| 74 |
+
$('<?php echo $this->getStreet2() ?>').value = result.street_2;
|
| 75 |
+
$('<?php echo $this->getCity() ?>').value = result.city;
|
| 76 |
+
$('<?php echo $this->getRegionInput($inputType) ?>').value = result.region;
|
| 77 |
+
$('<?php echo $this->getZip() ?>').value = result.zip;
|
| 78 |
+
}
|
| 79 |
+
}.bind(this)
|
| 80 |
+
}
|
| 81 |
+
)
|
| 82 |
+
}
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
Event.observe(window, 'load', function() {
|
| 87 |
+
Object.extend(Billing.prototype, {
|
| 88 |
+
save: function(){
|
| 89 |
+
if ($('billing-new-address-form').visible() && keepBillingAddress === false) {
|
| 90 |
+
new Ajax.Request(
|
| 91 |
+
'<?php echo Mage::getUrl('qas/process/addressSearchEngine/edit/3')?>',
|
| 92 |
+
{
|
| 93 |
+
method: 'post',
|
| 94 |
+
parameters: Form.serialize(this.form),
|
| 95 |
+
onSuccess: function(transport){
|
| 96 |
+
if (transport.responseText) {
|
| 97 |
+
$$('.interactionWindow .display').each(function(item){
|
| 98 |
+
item.show();
|
| 99 |
+
});
|
| 100 |
+
interactionWindowBillingContent.update(transport.responseText);
|
| 101 |
+
interactionWindowBilling.show();
|
| 102 |
+
interactionWindowBillingMask.show();
|
| 103 |
+
}
|
| 104 |
+
}.bind(this),
|
| 105 |
+
onComplete: function(transport){
|
| 106 |
+
if (!transport.responseText) {
|
| 107 |
+
saveAddress(this, 'billing');
|
| 108 |
+
}
|
| 109 |
+
}.bind(this),
|
| 110 |
+
onFailure: function(){
|
| 111 |
+
saveAddress(this, 'billing');
|
| 112 |
+
}.bind(this)
|
| 113 |
+
}
|
| 114 |
+
);
|
| 115 |
+
} else {
|
| 116 |
+
saveAddress(this, 'billing');
|
| 117 |
+
}
|
| 118 |
+
}
|
| 119 |
+
});
|
| 120 |
+
});
|
| 121 |
+
//]]>
|
| 122 |
+
</script>
|
| 123 |
+
|
| 124 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/qas/checkout/shipping.phtml
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php $helper = Mage::helper('experian_qas'); ?>
|
| 2 |
+
<?php if ($helper->isSearchEngineEnabled()): ?>
|
| 3 |
+
<?php
|
| 4 |
+
//code popin factorization
|
| 5 |
+
echo $this->getLayout()->createBlock('core/template')->setTemplate('qas/popin.phtml')->setAlias('shipping')->toHtml();
|
| 6 |
+
|
| 7 |
+
?>
|
| 8 |
+
<script type="text/javascript">
|
| 9 |
+
//<![CDATA[
|
| 10 |
+
var interactionWindowShipping = $('interactionWindowShipping');
|
| 11 |
+
var interactionWindowShippingMask = $('interactionWindowShipping-mask');
|
| 12 |
+
var interactionWindowContentShipping = $('interactionWindowContentShipping');
|
| 13 |
+
var keepShippingAddress = false;
|
| 14 |
+
|
| 15 |
+
function leaveShippingAddress(){
|
| 16 |
+
interactionWindowShipping.hide();
|
| 17 |
+
interactionWindowShippingMask.hide();
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
function keepMyShippingAddress(){
|
| 21 |
+
keepShippingAddress = true;
|
| 22 |
+
interactionWindowShipping.hide();
|
| 23 |
+
interactionWindowShippingMask.hide();
|
| 24 |
+
shipping.save();
|
| 25 |
+
keepShippingAddress = false;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
function selectShippingAddress() {
|
| 29 |
+
var shippingForm = new VarienForm('<?php echo Experian_Qas_Block_Interaction::INTERACTION_FORM_NAME ?>Shipping');
|
| 30 |
+
var validator = new Validation(shippingForm.form);
|
| 31 |
+
|
| 32 |
+
if (validator.validate()) {
|
| 33 |
+
new Ajax.Request(
|
| 34 |
+
'<?php echo Mage::getUrl('qas/process/normalizeAddress') ?>',
|
| 35 |
+
{
|
| 36 |
+
method: 'post',
|
| 37 |
+
parameters: Form.serialize($('<?php echo Experian_Qas_Block_Interaction::INTERACTION_FORM_NAME . 'Shipping' ?>')),
|
| 38 |
+
onComplete: function() {
|
| 39 |
+
saveAddress(shipping, 'shipping');
|
| 40 |
+
},
|
| 41 |
+
onFailure: function(response){
|
| 42 |
+
alert('An error occurred while processing your request');
|
| 43 |
+
this.onComplete;
|
| 44 |
+
},
|
| 45 |
+
onSuccess: function(response){
|
| 46 |
+
if (response && response.responseText){
|
| 47 |
+
interactionWindowShipping.hide();
|
| 48 |
+
interactionWindowShippingMask.hide();
|
| 49 |
+
if (typeof(response.responseText) == 'string') {
|
| 50 |
+
eval('result = ' + response.responseText);
|
| 51 |
+
}
|
| 52 |
+
//for region input
|
| 53 |
+
<?php $inputType = 'text';?>
|
| 54 |
+
|
| 55 |
+
if(!isNaN(result.region)) {
|
| 56 |
+
<?php $inputType = 'select';?>
|
| 57 |
+
var current_select = $('<?php echo $this->getRegion() ?>');
|
| 58 |
+
var current_non = current_select.select('option[value="'+result.region+'"]');
|
| 59 |
+
var options = current_select.select("option");
|
| 60 |
+
if (current_non[0]) {
|
| 61 |
+
options.each(function(item)
|
| 62 |
+
{
|
| 63 |
+
if(item.value == current_non[0].value)
|
| 64 |
+
{
|
| 65 |
+
item.selected = true;
|
| 66 |
+
}
|
| 67 |
+
});
|
| 68 |
+
}
|
| 69 |
+
}
|
| 70 |
+
$('<?php echo $this->getStreet1() ?>').value = result.street_1;
|
| 71 |
+
$('<?php echo $this->getStreet2() ?>').value = result.street_2;
|
| 72 |
+
$('<?php echo $this->getCity() ?>').value = result.city;
|
| 73 |
+
$('<?php echo $this->getRegionInput($inputType) ?>').value = result.region;
|
| 74 |
+
$('<?php echo $this->getZip() ?>').value = result.zip;
|
| 75 |
+
}
|
| 76 |
+
}.bind(this)
|
| 77 |
+
}
|
| 78 |
+
)
|
| 79 |
+
}
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
Event.observe(window, 'load', function() {
|
| 85 |
+
Object.extend(Shipping.prototype, {
|
| 86 |
+
save: function(){
|
| 87 |
+
if ($('shipping-new-address-form').visible() && keepShippingAddress === false) {
|
| 88 |
+
new Ajax.Request(
|
| 89 |
+
'<?php echo Mage::getUrl('qas/process/addressSearchEngine/edit/2')?>',
|
| 90 |
+
{
|
| 91 |
+
method: 'post',
|
| 92 |
+
parameters: Form.serialize(this.form),
|
| 93 |
+
onSuccess: function(transport){
|
| 94 |
+
if (transport.responseText) {
|
| 95 |
+
$$('.interactionWindow .display').each(function(item){
|
| 96 |
+
item.show();
|
| 97 |
+
});
|
| 98 |
+
interactionWindowContentShipping.update(transport.responseText);
|
| 99 |
+
interactionWindowShipping.show();
|
| 100 |
+
interactionWindowShippingMask.show();
|
| 101 |
+
}
|
| 102 |
+
}.bind(this),
|
| 103 |
+
onComplete: function(transport){
|
| 104 |
+
if (!transport.responseText) {
|
| 105 |
+
saveAddress(this, 'shipping');
|
| 106 |
+
}
|
| 107 |
+
}.bind(this),
|
| 108 |
+
onFailure: function(){
|
| 109 |
+
saveAddress(this, 'shipping');
|
| 110 |
+
}.bind(this)
|
| 111 |
+
}
|
| 112 |
+
);
|
| 113 |
+
} else {
|
| 114 |
+
saveAddress(this, 'shipping');
|
| 115 |
+
}
|
| 116 |
+
}
|
| 117 |
+
});
|
| 118 |
+
});
|
| 119 |
+
//]]>
|
| 120 |
+
</script>
|
| 121 |
+
|
| 122 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/qas/customer/address/edit.phtml
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php $helper = Mage::helper('experian_qas'); ?>
|
| 2 |
+
<?php if ($helper->isSearchEngineEnabled()): ?>
|
| 3 |
+
<?php
|
| 4 |
+
//code popin factorization
|
| 5 |
+
echo $this->getLayout()->createBlock('core/template')->setTemplate('qas/popin.phtml')->setAlias('customer')->toHtml();
|
| 6 |
+
|
| 7 |
+
?>
|
| 8 |
+
<script type="text/javascript">
|
| 9 |
+
//<![CDATA[
|
| 10 |
+
var interactionWindow = $('interactionWindowCustomer');
|
| 11 |
+
var interactionWindowMask = $('interactionWindowCustomer-mask');
|
| 12 |
+
var interactionWindowContent = $('interactionWindowContentCustomer');
|
| 13 |
+
var keepBillingAddress = false;
|
| 14 |
+
|
| 15 |
+
function leaveCustomerAddress(){
|
| 16 |
+
interactionWindow.hide();
|
| 17 |
+
interactionWindowMask.hide();
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
function keepMyCustomerAddress(){
|
| 21 |
+
keepBillingAddress = true;
|
| 22 |
+
interactionWindow.hide();
|
| 23 |
+
interactionWindowMask.hide();
|
| 24 |
+
$('<?php echo $this->getFormName() ?>').submit();
|
| 25 |
+
keepBillingAddress = false;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
function selectCustomerAddress() {
|
| 30 |
+
var customerForm = new VarienForm('<?php echo Experian_Qas_Block_Interaction::INTERACTION_FORM_NAME ?>Customer');
|
| 31 |
+
var validator = new Validation(customerForm.form);
|
| 32 |
+
|
| 33 |
+
if (validator.validate()) {
|
| 34 |
+
new Ajax.Request(
|
| 35 |
+
'<?php echo Mage::getUrl('qas/process/normalizeAddress') ?>',
|
| 36 |
+
{
|
| 37 |
+
method: 'post',
|
| 38 |
+
parameters: Form.serialize($('<?php echo Experian_Qas_Block_Interaction::INTERACTION_FORM_NAME ?>Customer')),
|
| 39 |
+
onComplete: function() {
|
| 40 |
+
},
|
| 41 |
+
onFailure: function(response){
|
| 42 |
+
alert('An error occurred while processing your request');
|
| 43 |
+
this.onComplete;
|
| 44 |
+
},
|
| 45 |
+
onSuccess: function(response){
|
| 46 |
+
if (response && response.responseText){
|
| 47 |
+
|
| 48 |
+
interactionWindow.hide();
|
| 49 |
+
interactionWindowMask.hide();
|
| 50 |
+
if (typeof(response.responseText) == 'string') {
|
| 51 |
+
eval('result = ' + response.responseText);
|
| 52 |
+
}
|
| 53 |
+
//for region input
|
| 54 |
+
<?php $inputType = 'text';?>
|
| 55 |
+
|
| 56 |
+
if(!isNaN(result.region)) {
|
| 57 |
+
<?php $inputType = 'select';?>
|
| 58 |
+
var current_select = $('<?php echo $this->getRegion() ?>');
|
| 59 |
+
var current_non = current_select.select('option[value="'+result.region+'"]');
|
| 60 |
+
var options = current_select.select("option");
|
| 61 |
+
if (current_non[0]) {
|
| 62 |
+
options.each(function(item)
|
| 63 |
+
{
|
| 64 |
+
if(item.value == current_non[0].value)
|
| 65 |
+
{
|
| 66 |
+
item.selected = true;
|
| 67 |
+
}
|
| 68 |
+
});
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
}
|
| 72 |
+
$('<?php echo $this->getStreet1() ?>').value = result.street_1;
|
| 73 |
+
$('<?php echo $this->getStreet2() ?>').value = result.street_2;
|
| 74 |
+
$('<?php echo $this->getCity() ?>').value = result.city;
|
| 75 |
+
$('<?php echo $this->getRegionInput($inputType) ?>').value = result.region;
|
| 76 |
+
$('<?php echo $this->getZip() ?>').value = result.zip;
|
| 77 |
+
$('<?php echo $this->getFormName() ?>').submit();
|
| 78 |
+
}
|
| 79 |
+
}.bind(this)
|
| 80 |
+
}
|
| 81 |
+
)
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
|
| 89 |
+
Event.observe(window, 'load', function() {
|
| 90 |
+
Event.observe($('<?php echo $this->getFormName() ?>'), 'submit', function(event){
|
| 91 |
+
if (keepBillingAddress === false) {
|
| 92 |
+
new Ajax.Request(
|
| 93 |
+
// the param id is used to identify the source of address edition
|
| 94 |
+
'<?php echo Mage::getUrl('qas/process/addressSearchEngine/edit/1')?>',
|
| 95 |
+
{
|
| 96 |
+
method: 'post',
|
| 97 |
+
asynchronous: false,
|
| 98 |
+
parameters: Form.serialize($('<?php echo $this->getFormName() ?>')),
|
| 99 |
+
onSuccess: function(transport){
|
| 100 |
+
//added to overcome the visiblity problem of buttons.
|
| 101 |
+
if (transport.responseText) {
|
| 102 |
+
$$('.interactionWindow .display').each(function(item){
|
| 103 |
+
item.show();
|
| 104 |
+
});
|
| 105 |
+
interactionWindowContent.update(transport.responseText);
|
| 106 |
+
interactionWindow.show();
|
| 107 |
+
interactionWindowMask.show();
|
| 108 |
+
}
|
| 109 |
+
}.bind(this),
|
| 110 |
+
onComplete: function(transport){
|
| 111 |
+
if (!transport.responseText) {
|
| 112 |
+
keepMyCustomerAddress();
|
| 113 |
+
}
|
| 114 |
+
}.bind(this),
|
| 115 |
+
onFailure: function(){
|
| 116 |
+
keepMyCustomerAddress();
|
| 117 |
+
}.bind(this)
|
| 118 |
+
}
|
| 119 |
+
);
|
| 120 |
+
Event.stop(event);
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
}.bind(this));
|
| 124 |
+
});
|
| 125 |
+
//]]>
|
| 126 |
+
</script>
|
| 127 |
+
|
| 128 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/qas/email_validate.phtml
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php $helper = Mage::helper('experian_qas'); ?>
|
| 2 |
+
|
| 3 |
+
<?php if ($helper->isEmailValidateEnabled()): ?>
|
| 4 |
+
|
| 5 |
+
<?php $emailValidateUrl = Mage::getUrl('qas/process/validateEmail'); ?>
|
| 6 |
+
<?php $acceptUnknownsEmails = $helper->isAcceptUnknowsEmails();?>
|
| 7 |
+
<script type="text/javascript">
|
| 8 |
+
//<![CDATA[
|
| 9 |
+
// Needed for Magento version wich do not support jstranslator.xml
|
| 10 |
+
Translator.add('unknown', '<?php echo $this->__('unknown'); ?>');
|
| 11 |
+
Translator.add('illegitimate', '<?php echo $this->__('illegitimate'); ?>');
|
| 12 |
+
Translator.add('disposable', '<?php echo $this->__('disposable'); ?>');
|
| 13 |
+
Translator.add('undeliverable', '<?php echo $this->__('undeliverable'); ?>');
|
| 14 |
+
Translator.add('unreachable', '<?php echo $this->__('unreachable'); ?>');
|
| 15 |
+
|
| 16 |
+
Validation.add('validate-email', '', function(v) {
|
| 17 |
+
var url = '<?php echo $emailValidateUrl ?>?email='+ encodeURIComponent(v);
|
| 18 |
+
var isEmailValid = false;
|
| 19 |
+
new Ajax.Request(url, {
|
| 20 |
+
method: 'get',
|
| 21 |
+
asynchronous: false,
|
| 22 |
+
onCreate: function() {
|
| 23 |
+
$$('.validate-email').each(function(email) {
|
| 24 |
+
email.insert({after: '<img class="validate-email-loader" src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif')?>" />'});
|
| 25 |
+
});
|
| 26 |
+
},
|
| 27 |
+
onSuccess: function(transport) {
|
| 28 |
+
var obj = eval('(' + transport.responseText + ')');
|
| 29 |
+
|
| 30 |
+
if (typeof obj == 'object' && typeof obj.Certainty == 'string' &&
|
| 31 |
+
(obj.Certainty == 'verified' <?php echo $acceptUnknownsEmails ? "|| obj.Certainty == 'unknown'" : ''?>)) {
|
| 32 |
+
isEmailValid = true;
|
| 33 |
+
} else {
|
| 34 |
+
Validation.get('validate-email').error = Translator.translate(obj.Certainty);
|
| 35 |
+
}
|
| 36 |
+
return isEmailValid;
|
| 37 |
+
},
|
| 38 |
+
onComplete: function() {
|
| 39 |
+
$$('.validate-email-loader').each(function(loader) {
|
| 40 |
+
loader.remove();
|
| 41 |
+
});
|
| 42 |
+
|
| 43 |
+
$$('.validate-email').each(function(email) {
|
| 44 |
+
if (typeof email.next('.validation-advice') != "undefined") {
|
| 45 |
+
email.next('.validation-advice').remove();
|
| 46 |
+
}
|
| 47 |
+
});
|
| 48 |
+
}
|
| 49 |
+
});
|
| 50 |
+
|
| 51 |
+
return isEmailValid;
|
| 52 |
+
});
|
| 53 |
+
//]]>
|
| 54 |
+
</script>
|
| 55 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/qas/interaction.phtml
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php $picklist = $this->getSuggestData(); ?>
|
| 2 |
+
<?php if ($picklist) : ?>
|
| 3 |
+
<div>
|
| 4 |
+
<?php echo $this->__('Please choose one of the following addresses and click on <strong>Select</strong>.<br/>If there is no matching and you are sure that you entered a valid address, click on <strong>Keep my address</strong>.') ?>
|
| 5 |
+
</div>
|
| 6 |
+
<div style="max-height: 350px; overflow: auto; margin: 15px 0px;">
|
| 7 |
+
<?php foreach ($picklist as $address): ?>
|
| 8 |
+
<div>
|
| 9 |
+
<input id="<?php echo $address['value'] ?>" class="validate-one-required-by-name" name="<?php echo Experian_Qas_Helper_Data::QUERY_MONIKER ?>" type="radio" value="<?php echo $address['value'] ?>">
|
| 10 |
+
<label for="<?php echo $address['value'] ?>"><?php echo $address['title'] ?></label>
|
| 11 |
+
</div>
|
| 12 |
+
<?php endforeach; ?>
|
| 13 |
+
</div>
|
| 14 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/qas/intuitive.phtml
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php $suffix = $this->getSuffix(); ?>
|
| 2 |
+
<?php $helper = Mage::helper('experian_qas'); ?>
|
| 3 |
+
<?php if ($helper->isIntuitiveEnabled()): ?>
|
| 4 |
+
|
| 5 |
+
<div id="address_search_autocomplete" class="search_autocomplete"></div>
|
| 6 |
+
<script type="text/javascript">
|
| 7 |
+
//<![CDATA[
|
| 8 |
+
var QUERY_PARAM = '<?php echo Experian_Qas_Helper_Data::QUERY_PARAM ?>';
|
| 9 |
+
var QUERY_MONIKER = '<?php echo Experian_Qas_Helper_Data::QUERY_MONIKER ?>';
|
| 10 |
+
var QUERY_COUNTRY = '<?php echo Experian_Qas_Helper_Data::QUERY_COUNTRY ?>';
|
| 11 |
+
var NORMALIZE_URL = '<?php echo Mage::getUrl('qas/process/normalizeAddress')?>';
|
| 12 |
+
var INTUITIVE_URL = '<?php echo Mage::getUrl('qas/process/intuitiveEngine')?>';
|
| 13 |
+
//]]>
|
| 14 |
+
</script>
|
| 15 |
+
|
| 16 |
+
<script type="text/javascript">
|
| 17 |
+
//<![CDATA[
|
| 18 |
+
Event.observe(window, 'load', function() {
|
| 19 |
+
var addressSearchForm_<?php echo $suffix ?> = new Varien.addressSearchForm(
|
| 20 |
+
'<?php echo $this->getFormName() ?>',
|
| 21 |
+
'<?php echo $this->getStreet1() ?>',
|
| 22 |
+
'',
|
| 23 |
+
'<?php echo $this->getCountry() ?>',
|
| 24 |
+
'<?php echo $this->getRegion() ?>',
|
| 25 |
+
'<?php echo $this->getCity() ?>',
|
| 26 |
+
'<?php echo $this->getZip() ?>',
|
| 27 |
+
'<?php echo $this->getStreet1() ?>',
|
| 28 |
+
'<?php echo $this->getStreet2() ?>'
|
| 29 |
+
);
|
| 30 |
+
addressSearchForm_<?php echo $suffix ?>.initAutocomplete(
|
| 31 |
+
INTUITIVE_URL,
|
| 32 |
+
'address_search_autocomplete'
|
| 33 |
+
);
|
| 34 |
+
});
|
| 35 |
+
//]]>
|
| 36 |
+
</script>
|
| 37 |
+
|
| 38 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/qas/popin.phtml
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
$suffix = null;
|
| 3 |
+
$myMethod = array ( $this, 'getAlias' );
|
| 4 |
+
if(is_callable($myMethod,true)) {
|
| 5 |
+
$suffix = ucfirst($this->getAlias());
|
| 6 |
+
}
|
| 7 |
+
?>
|
| 8 |
+
<div id="interactionWindow<?php echo $suffix ?>-mask" class="interactionWindow-mask" style="display: none;"></div>
|
| 9 |
+
<div id="interactionWindow<?php echo $suffix ?>" class="interactionWindow"
|
| 10 |
+
style="display: none;">
|
| 11 |
+
<div class="message-popup-head">
|
| 12 |
+
<a title="<?php echo $this->__('Close') ?>" onclick="leave<?php echo $suffix ?>Address(); return false;" href="#">
|
| 13 |
+
<span><?php echo $this->__('Close') ?></span>
|
| 14 |
+
</a>
|
| 15 |
+
<h2><?php echo $this->__('Address confirmation') ?></h2>
|
| 16 |
+
</div>
|
| 17 |
+
<div class="message-popup-content">
|
| 18 |
+
<form
|
| 19 |
+
id="<?php echo Experian_Qas_Helper_Data::INTERACTION_FORM_NAME.$suffix?>"
|
| 20 |
+
action="<?php echo Mage::getUrl('qas/process/normalizeAddress')?>">
|
| 21 |
+
<div id="interactionWindowContent<?php echo $suffix ?>"></div>
|
| 22 |
+
<div>
|
| 23 |
+
<button type="button"
|
| 24 |
+
title="<?php echo $this->__('Select') ?>"
|
| 25 |
+
class="button display" onclick="select<?php echo $suffix ?>Address()">
|
| 26 |
+
<span><span><?php echo $this->__('Select') ?> </span> </span>
|
| 27 |
+
</button>
|
| 28 |
+
<button type="button"
|
| 29 |
+
title="<?php echo $this->__('Keep my address') ?>"
|
| 30 |
+
class="button" onclick="keepMy<?php echo $suffix ?>Address()">
|
| 31 |
+
<span><span><?php echo $this->__('Keep my address') ?> </span>
|
| 32 |
+
</span>
|
| 33 |
+
</button>
|
| 34 |
+
|
| 35 |
+
</div>
|
| 36 |
+
</form>
|
| 37 |
+
</div>
|
| 38 |
+
</div>
|
app/etc/modules/Experian_Qas.xml
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* @category Experian
|
| 5 |
+
* @package Experian_Qas
|
| 6 |
+
* @copyright Experian 2012
|
| 7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 8 |
+
*/
|
| 9 |
+
-->
|
| 10 |
+
<config>
|
| 11 |
+
<modules>
|
| 12 |
+
<Experian_Qas>
|
| 13 |
+
<active>true</active>
|
| 14 |
+
<codePool>community</codePool>
|
| 15 |
+
</Experian_Qas>
|
| 16 |
+
</modules>
|
| 17 |
+
</config>
|
app/locale/en_US/Experian_Qas.csv
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"One or more services timed out", "One or more services timed out"
|
| 2 |
+
"One or more services failed", "One or more services failed"
|
| 3 |
+
"Success", "Success"
|
| 4 |
+
"Invalid request", "Invalid request"
|
| 5 |
+
"Invalid parameter", "Invalid parameter"
|
| 6 |
+
"Not authorized for one or more services", "Not authorized for one or more services"
|
| 7 |
+
"Service unavailable", "Service unavailable"
|
| 8 |
+
"Email codes Code Description", "Email codes Code Description"
|
| 9 |
+
"Timeout", "Timeout"
|
| 10 |
+
"Syntax OK", "Syntax OK"
|
| 11 |
+
"Syntax OK and domain valid according to the domain database", "Syntax OK and domain valid according to the domain database"
|
| 12 |
+
"Syntax OK and domain exists", "Syntax OK and domain exists"
|
| 13 |
+
"Syntax OK, domain exists, and domain can receive email", "Syntax OK, domain exists, and domain can receive email"
|
| 14 |
+
"Syntax OK, domain exists, and mailbox does not reject mail", "Syntax OK, domain exists, and mailbox does not reject mail"
|
| 15 |
+
"General syntax error", "General syntax error"
|
| 16 |
+
"Invalid character in address", "Invalid character in address"
|
| 17 |
+
"Invalid domain syntax", "Invalid domain syntax"
|
| 18 |
+
"Invalid username syntax", "Invalid username syntax"
|
| 19 |
+
"Invalid username syntax for that domain", "Invalid username syntax for that domain"
|
| 20 |
+
"Address is too long", "Address is too long"
|
| 21 |
+
"Address has unbalanced parentheses, brackets, or quotes", "Address has unbalanced parentheses, brackets, or quotes"
|
| 22 |
+
"Address does not have a username", "Address does not have a username"
|
| 23 |
+
"Address does not have a domain", "Address does not have a domain"
|
| 24 |
+
"Address does not have an @ sign", "Address does not have an @ sign"
|
| 25 |
+
"Address has more than one @ sign", "Address has more than one @ sign"
|
| 26 |
+
"Invalid top-level-domain (TLD) in address", "Invalid top-level-domain (TLD) in address"
|
| 27 |
+
"Unquoted spaces are not allowed in email addresses", "Unquoted spaces are not allowed in email addresses"
|
| 28 |
+
"Domain does not exist", "Domain does not exist"
|
| 29 |
+
"Domain does not have a valid IP address", "Domain does not have a valid IP address"
|
| 30 |
+
"Domain cannot receive email", "Domain cannot receive email"
|
| 31 |
+
"The mailbox is invalid or the username does not exist at the domain", "The mailbox is invalid or the username does not exist at the domain"
|
| 32 |
+
"Mailbox is full and can not receive email at this time", "Mailbox is full and can not receive email at this time"
|
| 33 |
+
"Mail is not accepted for this domain", "Mail is not accepted for this domain"
|
| 34 |
+
"Addresses with that username are not allowed", "Addresses with that username are not allowed"
|
| 35 |
+
"Addresses with that domain are not allowed", "Addresses with that domain are not allowed"
|
| 36 |
+
"The email address is suppressed and not allowed", "The email address is suppressed and not allowed"
|
| 37 |
+
"Internal error", "Internal error"
|
| 38 |
+
"unreachable", "Invalid domain: DNS registration (DNS = Domain Name System) invalid or non-existent or mail server unreachable."
|
| 39 |
+
"unknown", "Can not give a conclusive answer on the email address."
|
| 40 |
+
"illegitimate", "Emails for which it is harmful to send emails"
|
| 41 |
+
"disposable", "Belongs to an email created for a limited period, eg mailinator.com or jetable.org"
|
| 42 |
+
"undeliverable", "The email is not deliverable - does not exist, closed or full inbox."
|
app/locale/fr_FR/Experian_Qas.csv
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"One or more services timed out", "Un ou plusieurs services ont expiré"
|
| 2 |
+
"One or more services failed", "Un ou plusieurs services ont échoué"
|
| 3 |
+
"Success", "Succès"
|
| 4 |
+
"Invalid request", "Requête invalide"
|
| 5 |
+
"Invalid parameter", "Paramètre invalide"
|
| 6 |
+
"Not authorized for one or more services", "Vous n'avez pas l'autorisation d'utiliser un ou plusieurs services"
|
| 7 |
+
"Service unavailable", "Service non disponible"
|
| 8 |
+
"Email codes Code Description", "Email codes Code Description"
|
| 9 |
+
"Timeout", "Délai d'attente épuisé"
|
| 10 |
+
"Syntax OK", "Syntaxe correcte"
|
| 11 |
+
"Syntax OK and domain valid according to the domain database", "Syntaxe et nom de domaine valides selon la base de données"
|
| 12 |
+
"Syntax OK and domain exists", "Syntaxe correcte et nom de domaine valide"
|
| 13 |
+
"Syntax OK, domain exists, and domain can receive email", "Syntaxe correcte, nom de domaine valide et peut recevoir des emails"
|
| 14 |
+
"Syntax OK, domain exists, and mailbox does not reject mail", "Syntaxe correcte, nom de domaine valide et la mailbox ne rejette pas les emails"
|
| 15 |
+
"General syntax error", "Erreur générale dans la syntaxe"
|
| 16 |
+
"Invalid character in address", "Caractère invalide dans l'adresse"
|
| 17 |
+
"Invalid domain syntax", "Syntaxe du domaine incorrecte"
|
| 18 |
+
"Invalid username syntax", "Syntaxe de l'utilisateur incorrecte"
|
| 19 |
+
"Invalid username syntax for that domain", "Syntaxe utilisateur incorrecte pour ce domaine"
|
| 20 |
+
"Address is too long", "Adresse très longue"
|
| 21 |
+
"Address has unbalanced parentheses, brackets, or quotes", "Address has unbalanced parentheses, brackets, or quotes"
|
| 22 |
+
"Address does not have a username", "L'adresse n'a pas d'utilisateur"
|
| 23 |
+
"Address does not have a domain", "L'adresse n'a pas de domaine"
|
| 24 |
+
"Address does not have an @ sign", "L'adresse n'a pas le signe @"
|
| 25 |
+
"Address has more than one @ sign", "L'adresse a plus d'un signe @"
|
| 26 |
+
"Invalid top-level-domain (TLD) in address", "Le top-level-domain (TLD) dans l'adresse n'est pas valide"
|
| 27 |
+
"Unquoted spaces are not allowed in email addresses", "Les espaces ne sont pas autorisés dans l'adresse mail"
|
| 28 |
+
"Domain does not exist", "Le domaine n'existe pas"
|
| 29 |
+
"Domain does not have a valid IP address", "Le domaine a adresse IP invalide"
|
| 30 |
+
"Domain cannot receive email", "Le domaine ne peut pas recevoir d'emails"
|
| 31 |
+
"The mailbox is invalid or the username does not exist at the domain", "La mailbox ou l'utilisateur n'existe pas pour ce domaine"
|
| 32 |
+
"Mailbox is full and can not receive email at this time", "La mailbox est pleine et ne peut recevoir d'e-mails supplémentaires"
|
| 33 |
+
"Mail is not accepted for this domain", "L'e-mail n'est pas accepté pour ce domaine"
|
| 34 |
+
"Addresses with that username are not allowed", "Les adresses mail avec cet utilisateur ne sont pas autorisées"
|
| 35 |
+
"Addresses with that domain are not allowed", "Les adresses mail avec ce domaine ne sont pas autorisées"
|
| 36 |
+
"The email address is suppressed and not allowed", "L'adresse e-mail est supprimée et n'est plus autorisée"
|
| 37 |
+
"Internal error", "Erreur interne"
|
| 38 |
+
"unreachable", "Domaine invalide: enregistrement DNS (DNS= Domain Name System) invalide ou inexistant ou server mail injoignable."
|
| 39 |
+
"unknown", "Ne peut pas donner de réponse concluante sur l’adresse email."
|
| 40 |
+
"illegitimate", "Emails pour lesquels il est nocif d’envoyer des emails"
|
| 41 |
+
"disposable", "Appartient à un email créé pour une durée limitée, par ex mailinator.com ou jetable.org"
|
| 42 |
+
"undeliverable", "L’email n’est pas délivrable – n’existe pas, boite email fermée ou pleine."
|
package.xml
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>Experian_Qas</name>
|
| 4 |
+
<version>1.3.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>QAS for Magento Community & Enterprise</summary>
|
| 10 |
+
<description>Experian QAS is a leading provider of address data quality software and services. Their suite of
|
| 11 |
+
products is designed to capture, validate, clean, standardize and enrich addresses, names and
|
| 12 |
+
other important contact information.
|
| 13 |
+

|
| 14 |
+
For this Magento extension, four services will be integrated. QAS Email Validate, QAS Intuitive
|
| 15 |
+
Search Engine, QAS Verification and QAS SingleLine.
|
| 16 |
+
</description>
|
| 17 |
+
<notes>- Change email validation service
|
| 18 |
+
- Fix bugs
|
| 19 |
+
- Add intuitive cache system</notes>
|
| 20 |
+
<authors><author><name>Experian</name><user>ExperianFrance</user><email>QAS-DL-ProfessionalServices-FRA@experian.com</email></author></authors>
|
| 21 |
+
<date>2014-04-30</date>
|
| 22 |
+
<time>12:47:20</time>
|
| 23 |
+
<contents><target name="magecommunity"><dir name="Experian"><dir name="Qas"><dir name="Block"><dir name="AddressField"><file name="Billing.php" hash="c9bf10a8a5518640eda3f0fa78ead2dd"/><file name="Shipping.php" hash="c19dbfe5f6ac2584bcb07268b61687e3"/></dir><file name="AddressField.php" hash="48057abbd5c661bbff392d44da57eec6"/><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><file name="IntuitiveCountryFieldset.php" hash="b7458f47eb9d040cd3cdd36bf5bb8dd1"/></dir></dir></dir></dir><file name="Autocomplete.php" hash="152a5e3c52932e42bf4a421e593203ef"/><file name="Interaction.php" hash="e1889fe538cfba924739e196f3f4ef2d"/><file name="Verification.php" hash="e4e49505a6ca88d9263e7eb3fb59aee4"/></dir><dir name="Helper"><file name="Data.php" hash="7f4052948d7cdf72dd689f8346f9efa7"/></dir><dir name="Model"><file name="Observer.php" hash="4072c569da70074c8b1ba825e72beb72"/><file name="Qascall.php" hash="75f1c1cd7b9c296af8d3a106e5133773"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Engine.php" hash="201d5ec887be2b7212c663f21c79e5e8"/><file name="SpecialEngine.php" hash="9aa41b162a3c2484807a0b2ab9ca865c"/></dir></dir></dir></dir><dir name="controllers"><file name="ProcessController.php" hash="8a4040e1d7b4f1a9aca6c84d9512a2d3"/></dir><dir name="etc"><file name="adminhtml.xml" hash="2d66eea2e9f7f200bc683dbea7c4f9fa"/><file name="config.xml" hash="c1af05156931fcd2041656126ffdf459"/><file name="jstranslator.xml" hash="2fc4852a02ac4062d9b55960d88c9b0a"/><file name="system.xml" hash="98c156653141b905a402280035189067"/><file name="wsv3.wsdl" hash="39583e5ba6eba378e2e8f853197d11bd"/></dir><dir name="sql"><dir name="qas_setup"><file name="mysql4-install-0.0.1.php" hash="2da70417671b254650dc644e957c9798"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="experian_qas.xml" hash="d05d6eb05105f49976ce55b4659887ed"/></dir><dir name="template"><dir name="qas"><dir name="checkout"><file name="billing.phtml" hash="71c823ef5d5e8abd89102f1675eb0263"/><file name="shipping.phtml" hash="0f3dd235764026a12e5c012297438c2c"/></dir><dir name="customer"><dir name="address"><file name="edit.phtml" hash="8d612e77586c1c390ed576d40c2cd93b"/></dir></dir><file name="email_validate.phtml" hash="44363aab68426694228a4c2d949c7e14"/><file name="interaction.phtml" hash="52e54db9abad7047d15fadd019351542"/><file name="intuitive.phtml" hash="6a74984e2c856abd1ebb8b636465621f"/><file name="popin.phtml" hash="3f7ede1b68430db2a06e97e03e904c7c"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Experian_Qas.xml" hash="96f1b312c3dc1fa7084edacfe85f9f5c"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="qas"><dir name="css"><file name="styles.css" hash="93be3befc4db95aa7b5faaa982fbb4b3"/></dir><dir name="images"><file name="bkg_btn-close.gif" hash="df3f2332f0bad01e031deb22b81f630c"/><file name="bkg_btn-close2.gif" hash="822457d78fb3c21dc12e9777d83eb4f1"/></dir><dir name="js"><file name="intuitive.js" hash="cf727e77cb1dc2837826e838fa405a56"/><file name="searchengine.js" hash="da778e7e3a3b4737b92b09504a3d7c3c"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="fr_FR"><file name="Experian_Qas.csv" hash="0f622fb7bc057c84fd2d88746c066aa7"/></dir><dir name="en_US"><file name="Experian_Qas.csv" hash="4f8dd64729f48922a22c5ae0c404be68"/></dir></target></contents>
|
| 24 |
+
<compatible/>
|
| 25 |
+
<dependencies><required><php><min>5.3.3</min><max>6.0.0</max></php><extension><name>soap</name><min></min><max></max></extension></required></dependencies>
|
| 26 |
+
</package>
|
skin/frontend/base/default/qas/css/styles.css
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
.interactionWindow {
|
| 3 |
+
background: none repeat scroll 0 0 #F3BF8F;
|
| 4 |
+
width: 600px;
|
| 5 |
+
border: 1px;
|
| 6 |
+
border-color: #000;
|
| 7 |
+
border-style: solid;
|
| 8 |
+
position:absolute;
|
| 9 |
+
top: 20%;
|
| 10 |
+
left: 30%;
|
| 11 |
+
z-index:981;
|
| 12 |
+
padding: 0 4px 4px 4px;
|
| 13 |
+
text-align: left;
|
| 14 |
+
|
| 15 |
+
}
|
| 16 |
+
.interactionWindow a{
|
| 17 |
+
background: url("../images/bkg_btn-close.gif") repeat-x scroll 0 50% transparent !important;
|
| 18 |
+
border: 1px solid #EA7601;
|
| 19 |
+
color: #FFFFFF;
|
| 20 |
+
cursor: pointer;
|
| 21 |
+
float: right;
|
| 22 |
+
font: 12px/17px Arial,Helvetica,sans-serif;
|
| 23 |
+
padding: 0 12px 0 7px;
|
| 24 |
+
text-decoration: none !important;
|
| 25 |
+
}
|
| 26 |
+
.message-popup-content {
|
| 27 |
+
background: none repeat scroll 0 0 #FDF4EB;
|
| 28 |
+
padding: 21px 21px 10px;
|
| 29 |
+
}
|
| 30 |
+
.interactionWindow a span {
|
| 31 |
+
background: url("../images/bkg_btn-close2.gif") no-repeat scroll 0 50% transparent;
|
| 32 |
+
float: left;
|
| 33 |
+
padding-left: 19px;
|
| 34 |
+
}
|
| 35 |
+
.interactionWindow h2{
|
| 36 |
+
color: #644F3B;
|
| 37 |
+
font: bold 12px/19px Arial,Helvetica,sans-serif;
|
| 38 |
+
margin: 0;
|
| 39 |
+
padding: 0 10px;
|
| 40 |
+
}
|
| 41 |
+
.interactionWindow-mask {
|
| 42 |
+
background-color: #EFEFEF;
|
| 43 |
+
bottom: 0;
|
| 44 |
+
height: 100%;
|
| 45 |
+
left: 0;
|
| 46 |
+
opacity: 0.5;
|
| 47 |
+
position: absolute;
|
| 48 |
+
right: 0;
|
| 49 |
+
top: 0;
|
| 50 |
+
width: 100%;
|
| 51 |
+
z-index: 980;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
#address_search_autocomplete { z-index:999; height:350px; overflow:auto;}
|
| 55 |
+
#address_search_autocomplete ul { border:1px solid #5c7989; background-color:#f9f5f0; }
|
| 56 |
+
#address_search_autocomplete li { text-align:left; border-bottom:1px solid #f4eee7; padding:2px 8px 1px 8px; cursor:pointer; }
|
| 57 |
+
#address_search_autocomplete li .amount { float:right; font-weight:bold; }
|
| 58 |
+
#address_search_autocomplete li.odd { background-color:#fffefb; }
|
| 59 |
+
#address_search_autocomplete li.selected { background-color:#f7e8dd; }
|
| 60 |
+
|
| 61 |
+
.validate-email-loader {position:absolute; margin:2px 2px 1px 4px;}
|
skin/frontend/base/default/qas/images/bkg_btn-close.gif
ADDED
|
Binary file
|
skin/frontend/base/default/qas/images/bkg_btn-close2.gif
ADDED
|
Binary file
|
skin/frontend/base/default/qas/js/intuitive.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* Experian Qas Intuitive JS
|
| 3 |
+
*
|
| 4 |
+
* @category Experian
|
| 5 |
+
* @package Experian_Qas
|
| 6 |
+
* @copyright 2012 Experian
|
| 7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 8 |
+
*/
|
| 9 |
+
/**
|
| 10 |
+
* Quick Address Search form
|
| 11 |
+
*/
|
| 12 |
+
Varien.addressSearchForm = Class.create();
|
| 13 |
+
Varien.addressSearchForm.prototype = {
|
| 14 |
+
initialize : function(form, field, emptyText, country, region, city, zip, street, street2){
|
| 15 |
+
this.form = $(form);
|
| 16 |
+
this.field = $(field);
|
| 17 |
+
this.emptyText = emptyText;
|
| 18 |
+
|
| 19 |
+
this.country = country;
|
| 20 |
+
this.region = region;
|
| 21 |
+
this.city = city;
|
| 22 |
+
this.zip = zip;
|
| 23 |
+
this.street = street;
|
| 24 |
+
this.street2 = street2;
|
| 25 |
+
|
| 26 |
+
Event.observe(this.field, 'focus', this.focus.bind(this));
|
| 27 |
+
Event.observe(this.field, 'blur', this.blur.bind(this));
|
| 28 |
+
this.blur();
|
| 29 |
+
},
|
| 30 |
+
|
| 31 |
+
focus : function(event){
|
| 32 |
+
if(this.field.value==this.emptyText){
|
| 33 |
+
this.field.value='';
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
},
|
| 37 |
+
|
| 38 |
+
blur : function(event){
|
| 39 |
+
if(this.field.value==''){
|
| 40 |
+
this.field.value=this.emptyText;
|
| 41 |
+
}
|
| 42 |
+
},
|
| 43 |
+
|
| 44 |
+
getQueryString : function() {
|
| 45 |
+
this.queryString = '';
|
| 46 |
+
var street = $(this.street).value;
|
| 47 |
+
var zip = $(this.zip).value;
|
| 48 |
+
var city = $(this.city).value;
|
| 49 |
+
var country = $(this.country).value;
|
| 50 |
+
this.queryString += QUERY_PARAM + '=' + encodeURIComponent(street) +
|
| 51 |
+
/*' ' + encodeURIComponent(zip) +
|
| 52 |
+
' ' + encodeURIComponent(city) +*/
|
| 53 |
+
'&' + QUERY_COUNTRY + '=' + encodeURIComponent(country);
|
| 54 |
+
|
| 55 |
+
return this.queryString;
|
| 56 |
+
},
|
| 57 |
+
|
| 58 |
+
initAutocomplete : function(url, destinationElement){
|
| 59 |
+
new Ajax.Autocompleter(
|
| 60 |
+
this.field,
|
| 61 |
+
destinationElement,
|
| 62 |
+
url,
|
| 63 |
+
{
|
| 64 |
+
paramName: this.field.name,
|
| 65 |
+
callback: this.getQueryString.bind(this),
|
| 66 |
+
method: 'get',
|
| 67 |
+
minChars: 2,
|
| 68 |
+
updateElement: this._selectAutocompleteItem.bind(this),
|
| 69 |
+
onShow : function(element, update) {
|
| 70 |
+
if(!update.style.position || update.style.position=='absolute') {
|
| 71 |
+
update.style.position = 'absolute';
|
| 72 |
+
Position.clone(element, update, {
|
| 73 |
+
setHeight: false,
|
| 74 |
+
offsetTop: element.offsetHeight
|
| 75 |
+
});
|
| 76 |
+
}
|
| 77 |
+
Effect.Appear(update,{duration:0});
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
}
|
| 81 |
+
);
|
| 82 |
+
},
|
| 83 |
+
|
| 84 |
+
_selectAutocompleteItem : function(element){
|
| 85 |
+
if(typeof element.attributes.moniker != 'undefined'){
|
| 86 |
+
new Ajax.Request(
|
| 87 |
+
NORMALIZE_URL,
|
| 88 |
+
{
|
| 89 |
+
method: 'post',
|
| 90 |
+
parameters: QUERY_MONIKER+'='+element.attributes.moniker.value+'&'+QUERY_COUNTRY+'='+$(this.country).value,
|
| 91 |
+
onComplete: this.onComplete,
|
| 92 |
+
onFailure: function(response){
|
| 93 |
+
alert('An error occurred while processing your request');
|
| 94 |
+
this.onComplete;
|
| 95 |
+
},
|
| 96 |
+
onSuccess: function(response){
|
| 97 |
+
if (response && response.responseText){
|
| 98 |
+
if (typeof(response.responseText) == 'string') {
|
| 99 |
+
eval('result = ' + response.responseText);
|
| 100 |
+
}
|
| 101 |
+
$(this.street).value = result.street_1;
|
| 102 |
+
$(this.street2).value = result.street_2;
|
| 103 |
+
$(this.city).value = result.city;
|
| 104 |
+
$(this.zip).value = result.zip;
|
| 105 |
+
|
| 106 |
+
/* Special case for region option */
|
| 107 |
+
var optionValueToSelect = false;
|
| 108 |
+
$$('#' + this.region + ' option').each(function(option) {
|
| 109 |
+
if (option.text == result.region) {
|
| 110 |
+
optionValueToSelect = option.value;
|
| 111 |
+
}
|
| 112 |
+
});
|
| 113 |
+
if (optionValueToSelect != false) {
|
| 114 |
+
$(this.region).value = optionValueToSelect;
|
| 115 |
+
} else {
|
| 116 |
+
$(this.region).value = result.region;
|
| 117 |
+
}
|
| 118 |
+
}
|
| 119 |
+
}.bind(this)
|
| 120 |
+
}
|
| 121 |
+
)
|
| 122 |
+
}
|
| 123 |
+
}
|
| 124 |
+
}
|
skin/frontend/base/default/qas/js/searchengine.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* Experian Qas Singleline and Verification search engine JS
|
| 3 |
+
*
|
| 4 |
+
* @category Experian
|
| 5 |
+
* @package Experian_Qas
|
| 6 |
+
* @copyright 2012 Experian
|
| 7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 8 |
+
*/
|
| 9 |
+
|
| 10 |
+
function saveAddress(addressForm, addressType) {
|
| 11 |
+
if (checkout.loadWaiting!=false) return;
|
| 12 |
+
var validator = new Validation(addressForm.form);
|
| 13 |
+
if (validator.validate()) {
|
| 14 |
+
checkout.setLoadWaiting(addressType);
|
| 15 |
+
new Ajax.Request(
|
| 16 |
+
addressForm.saveUrl,
|
| 17 |
+
{
|
| 18 |
+
method: 'post',
|
| 19 |
+
onComplete: addressForm.onComplete,
|
| 20 |
+
onSuccess: addressForm.onSave,
|
| 21 |
+
onFailure: checkout.ajaxFailure.bind(checkout),
|
| 22 |
+
parameters: Form.serialize(addressForm.form)
|
| 23 |
+
}
|
| 24 |
+
);
|
| 25 |
+
}
|
| 26 |
+
}
|
