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 |
+
}
|