Mage_Exactor_Tax - Version 2012.07.23

Version Notes

Supported Magento 1.5.0.0 - 1.7.x

Download this release

Release Info

Developer Exactor, Inc.
Extension Mage_Exactor_Tax
Version 2012.07.23
Comparing to
See all releases


Code changes from version 2012.06.19 to 2012.07.23

app/code/local/Exactor/Core/Model/Type/Onepage.php CHANGED
@@ -1,4 +1,4 @@
1
- <?
2
 
3
  class Exactor_Core_Model_Type_Onepage extends Mage_Checkout_Model_Type_Onepage{
4
  /** @var Mage_Core_Model_Session_Abstract */
1
+ <?php
2
 
3
  class Exactor_Core_Model_Type_Onepage extends Mage_Checkout_Model_Type_Onepage{
4
  /** @var Mage_Core_Model_Session_Abstract */
app/code/local/Exactor/Core/etc/config.xml CHANGED
@@ -28,7 +28,7 @@
28
  <config>
29
  <modules>
30
  <Exactor_Core>
31
- <version>2012.06.19</version>
32
  </Exactor_Core>
33
  </modules>
34
  <global>
28
  <config>
29
  <modules>
30
  <Exactor_Core>
31
+ <version>2012.07.17</version>
32
  </Exactor_Core>
33
  </modules>
34
  <global>
app/code/local/Exactor/ExactorSettings/Helper/Data.php CHANGED
@@ -51,7 +51,6 @@ class Exactor_ExactorSettings_Helper_Data extends Mage_Core_Helper_Abstract{
51
  * @return Exactor_Core_Model_MerchantSettings|null
52
  */
53
  function loadMerchantSettingsOrEmptyObject($storeViewId=null){
54
- // TODO: Filter by store view id
55
  //if ($storeViewId == null) $storeViewId = 1; // 1 - ID of the default store view
56
  $merchantSettingsModel = Mage::getModel(self::MODEL_MERCHANT_SETTINGS);
57
  $merchantSettingsModel = $merchantSettingsModel
51
  * @return Exactor_Core_Model_MerchantSettings|null
52
  */
53
  function loadMerchantSettingsOrEmptyObject($storeViewId=null){
 
54
  //if ($storeViewId == null) $storeViewId = 1; // 1 - ID of the default store view
55
  $merchantSettingsModel = Mage::getModel(self::MODEL_MERCHANT_SETTINGS);
56
  $merchantSettingsModel = $merchantSettingsModel
app/code/local/Exactor/Sales/Model/Observer.php CHANGED
@@ -34,25 +34,25 @@ class Exactor_Sales_Model_Observer {
34
  $this->logger = ExactorLoggingFactory::getInstance()->getLogger($this);
35
  $this->exactorSettingsHelper = Mage::helper('ExactorSettings');
36
  $this->sessionCache = Mage::helper('Exactor_Core_SessionCache/');
37
- // Merchant Settings
38
- $this->merchantSettings = $this->loadMerchantSettings();
39
- if ($this->merchantSettings != null)
40
- $this->exactorProcessingService = ExactorProcessingServiceFactory::getInstance()->buildExactorProcessingService(
41
- $this->merchantSettings->getMerchantID(),
42
- $this->merchantSettings->getUserID());
43
- else
44
- $this->exactorProcessingService = null;
45
  }
46
 
47
  /**
 
48
  * @return Exactor_Core_Model_MerchantSettings|null
49
  */
50
- private function loadMerchantSettings(){
51
  $logger = ExactorLoggingFactory::getInstance()->getLogger($this);
52
- $merchantSettings = $this->exactorSettingsHelper->loadValidMerchantSettings($this->getStoreViewId());
 
 
53
  if ($merchantSettings == null){
54
  $logger->error('Settings are not populated.', 'buildExactorProcessingService');
 
55
  return null;
 
 
 
 
56
  }
57
  return $merchantSettings;
58
  }
@@ -74,13 +74,14 @@ class Exactor_Sales_Model_Observer {
74
  }
75
 
76
  public function handleAllOrdersCompleted(Varien_Event_Observer $observer){
77
- if ($this->merchantSettings == null) return;
78
  if (is_array($observer->getOrders()))
79
  $orders = array_reverse($observer->getOrders());
80
  else
81
  $orders = array($observer->getOrder());
82
  foreach($orders as $order){
83
- $transactionInfo = $this->sessionCache->popTransactionInfo();
 
 
84
  if ($transactionInfo == null){
85
  $this->logger->error('Nothing to process. There is no transaction in the session cache', 'handleCreatedOrder');
86
  return;
@@ -92,7 +93,7 @@ class Exactor_Sales_Model_Observer {
92
  $this->exactorProcessingService->getPluginCallback()->saveTransactionInfo($transactionInfo,$transactionInfo->getSignature());
93
  // if CommitOption is set up to commit on sales order - do commit the
94
  // latest transaction from the session storage
95
- if ($this->merchantSettings->getCommitOption() == Exactor_Core_Model_MerchantSettings::COMMIT_ON_SALES_ORDER){
96
  $this->exactorProcessingService->commitExistingInvoiceForOrder($orderId);
97
  }
98
  }
@@ -112,22 +113,25 @@ class Exactor_Sales_Model_Observer {
112
 
113
  public function handleNewCreditMemo(Varien_Event_Observer $observer){
114
  $this->logger->trace('called', 'handleNewCreditMemo');
115
- if ($this->merchantSettings == null) return;
 
116
  $orderId = $observer->getCreditmemo()->getOrder()->getIncrementId();
117
  $this->refundTransactionForOrder($orderId);
118
  }
119
 
120
  public function handleCancelOrder(Varien_Event_Observer $observer){
121
  $this->logger->trace('called', 'handleCancelOrder');
122
- if ($this->merchantSettings == null) return;
 
123
  $orderId = $observer->getOrder()->getIncrementId();
124
  $this->refundTransactionForOrder($orderId);
125
  }
126
 
127
  public function handleNewShipment(Varien_Event_Observer $observer){
128
  $this->logger->trace('called', 'handleNewShipment');
129
- if ($this->merchantSettings == null) return;
130
- if ($this->merchantSettings->getCommitOption() == Exactor_Core_Model_MerchantSettings::COMMIT_ON_SHIPMENT){
 
131
  $orderId = $observer->getShipment()->getOrder()->getIncrementId();
132
  $this->commitTransactionForOrder($orderId);
133
  }
@@ -135,18 +139,24 @@ class Exactor_Sales_Model_Observer {
135
 
136
  public function handleNewInvoice(Varien_Event_Observer $observer){
137
  $this->logger->trace('called', 'handleNewInvoice');
138
- if ($this->merchantSettings == null) return;
139
-
140
- if ($this->merchantSettings->getCommitOption() == Exactor_Core_Model_MerchantSettings::COMMIT_ON_INVOICE){
141
  $orderId = $observer->getInvoice()->getOrder()->getIncrementId();
142
  $this->commitTransactionForOrder($orderId);
143
  }
144
 
145
  }
146
 
147
- public function getStoreViewId(){
148
- // TODO: Temporary FIX! We should get store view ID from the order
 
 
 
149
  $storeId = Mage::app()->getStore()->getId();
 
 
 
150
  return $storeId != 0 ? $storeId : Mage::app()->getDefaultStoreView()->getId();
151
  }
152
  }
34
  $this->logger = ExactorLoggingFactory::getInstance()->getLogger($this);
35
  $this->exactorSettingsHelper = Mage::helper('ExactorSettings');
36
  $this->sessionCache = Mage::helper('Exactor_Core_SessionCache/');
 
 
 
 
 
 
 
 
37
  }
38
 
39
  /**
40
+ * @param Mage_Sales_Model_Order|null $order
41
  * @return Exactor_Core_Model_MerchantSettings|null
42
  */
43
+ private function loadMerchantSettings($order=null){
44
  $logger = ExactorLoggingFactory::getInstance()->getLogger($this);
45
+ $storeViewId = $this->getStoreViewId($order);
46
+ $merchantSettings = $this->exactorSettingsHelper->loadValidMerchantSettings($storeViewId);
47
+
48
  if ($merchantSettings == null){
49
  $logger->error('Settings are not populated.', 'buildExactorProcessingService');
50
+ $this->exactorProcessingService = null;
51
  return null;
52
+ }else{
53
+ $this->exactorProcessingService = ExactorProcessingServiceFactory::getInstance()->buildExactorProcessingService(
54
+ $merchantSettings->getMerchantID(),
55
+ $merchantSettings->getUserID());
56
  }
57
  return $merchantSettings;
58
  }
74
  }
75
 
76
  public function handleAllOrdersCompleted(Varien_Event_Observer $observer){
 
77
  if (is_array($observer->getOrders()))
78
  $orders = array_reverse($observer->getOrders());
79
  else
80
  $orders = array($observer->getOrder());
81
  foreach($orders as $order){
82
+ $merchantSettings = $this->loadMerchantSettings($order);
83
+ if ($merchantSettings==null) continue;
84
+ $transactionInfo = $this->sessionCache->popTransactionInfo($order);
85
  if ($transactionInfo == null){
86
  $this->logger->error('Nothing to process. There is no transaction in the session cache', 'handleCreatedOrder');
87
  return;
93
  $this->exactorProcessingService->getPluginCallback()->saveTransactionInfo($transactionInfo,$transactionInfo->getSignature());
94
  // if CommitOption is set up to commit on sales order - do commit the
95
  // latest transaction from the session storage
96
+ if ($merchantSettings->getCommitOption() == Exactor_Core_Model_MerchantSettings::COMMIT_ON_SALES_ORDER){
97
  $this->exactorProcessingService->commitExistingInvoiceForOrder($orderId);
98
  }
99
  }
113
 
114
  public function handleNewCreditMemo(Varien_Event_Observer $observer){
115
  $this->logger->trace('called', 'handleNewCreditMemo');
116
+ $merchantSettings = $this->loadMerchantSettings($observer->getCreditmemo()->getOrder());
117
+ if ($merchantSettings==null) return;
118
  $orderId = $observer->getCreditmemo()->getOrder()->getIncrementId();
119
  $this->refundTransactionForOrder($orderId);
120
  }
121
 
122
  public function handleCancelOrder(Varien_Event_Observer $observer){
123
  $this->logger->trace('called', 'handleCancelOrder');
124
+ $merchantSettings = $this->loadMerchantSettings($observer->getOrder());
125
+ if ($merchantSettings==null) return;
126
  $orderId = $observer->getOrder()->getIncrementId();
127
  $this->refundTransactionForOrder($orderId);
128
  }
129
 
130
  public function handleNewShipment(Varien_Event_Observer $observer){
131
  $this->logger->trace('called', 'handleNewShipment');
132
+ $merchantSettings = $this->loadMerchantSettings($observer->getShipment()->getOrder());
133
+ if ($merchantSettings==null) return;
134
+ if ($merchantSettings->getCommitOption() == Exactor_Core_Model_MerchantSettings::COMMIT_ON_SHIPMENT){
135
  $orderId = $observer->getShipment()->getOrder()->getIncrementId();
136
  $this->commitTransactionForOrder($orderId);
137
  }
139
 
140
  public function handleNewInvoice(Varien_Event_Observer $observer){
141
  $this->logger->trace('called', 'handleNewInvoice');
142
+ $merchantSettings = $this->loadMerchantSettings($observer->getInvoice()->getOrder());
143
+ if ($merchantSettings==null) return;
144
+ if ($merchantSettings->getCommitOption() == Exactor_Core_Model_MerchantSettings::COMMIT_ON_INVOICE){
145
  $orderId = $observer->getInvoice()->getOrder()->getIncrementId();
146
  $this->commitTransactionForOrder($orderId);
147
  }
148
 
149
  }
150
 
151
+ /**
152
+ * @param Mage_Sales_Model_Order|null $order
153
+ * @return int
154
+ */
155
+ public function getStoreViewId($order=null){
156
  $storeId = Mage::app()->getStore()->getId();
157
+ if ($order!=null){
158
+ $storeId = $order->getStoreId() ? $order->getStoreId() : 0;
159
+ }
160
  return $storeId != 0 ? $storeId : Mage::app()->getDefaultStoreView()->getId();
161
  }
162
  }
app/code/local/Exactor/Sales/etc/config.xml CHANGED
@@ -28,7 +28,7 @@
28
  <config>
29
  <modules>
30
  <Exactor_Sales>
31
- <version>2012.06.14</version>
32
  </Exactor_Sales>
33
  </modules>
34
  <global>
28
  <config>
29
  <modules>
30
  <Exactor_Sales>
31
+ <version>2012.06.23</version>
32
  </Exactor_Sales>
33
  </modules>
34
  <global>
app/code/local/Exactor/Tax/Helper/Mapping.php CHANGED
@@ -195,7 +195,10 @@ class Exactor_Tax_Helper_Mapping extends Mage_Core_Helper_Abstract {
195
  Exactor_Core_Model_MerchantSettings $merchantSettings){
196
  $lineItem = new LineItemType();
197
  $lineItem->setDescription($magentoItem->getName());
198
- $lineItem->setGrossAmount($magentoItem->getBaseRowTotal());
 
 
 
199
  $lineItem->setQuantity($magentoItem->getTotalQty());
200
  $lineItem->setSKU($this->getSKUForItem($magentoItem, $merchantSettings));
201
  $this->applyDiscountToLineItem($lineItem, $magentoItem->getDiscountAmount());
@@ -220,8 +223,12 @@ class Exactor_Tax_Helper_Mapping extends Mage_Core_Helper_Abstract {
220
  return $exemptionId;
221
  }
222
 
223
- private function getCurrentCurrencyCode(){
224
- $currency = Mage::app()->getStore()->getBaseCurrencyCode();
 
 
 
 
225
  if ($currency == null) $currency = 'USD';
226
  return $currency;
227
  }
@@ -255,7 +262,7 @@ class Exactor_Tax_Helper_Mapping extends Mage_Core_Helper_Abstract {
255
  $invoiceRequest->setPurchaseOrderNumber(self::PO_ESTIMATE_TEXT .$quoteAddress->getId());
256
  $invoiceRequest->setShipTo($shipToAddress);
257
  $invoiceRequest->setBillTo($billingAddress);
258
- $invoiceRequest->setCurrencyCode($this->getCurrentCurrencyCode());
259
  $invoiceRequest->setShipFrom($merchantSettings->getExactorShippingAddress());
260
  $invoiceRequest->setExemptionId($this->getExemptionIdForQuoteAddress($quoteAddress, $merchantSettings));
261
  // Line items list
195
  Exactor_Core_Model_MerchantSettings $merchantSettings){
196
  $lineItem = new LineItemType();
197
  $lineItem->setDescription($magentoItem->getName());
198
+ if ($magentoItem->getBaseRowTotal())
199
+ $lineItem->setGrossAmount($magentoItem->getBaseRowTotal());
200
+ else
201
+ $lineItem->setGrossAmount(0.0);
202
  $lineItem->setQuantity($magentoItem->getTotalQty());
203
  $lineItem->setSKU($this->getSKUForItem($magentoItem, $merchantSettings));
204
  $this->applyDiscountToLineItem($lineItem, $magentoItem->getDiscountAmount());
223
  return $exemptionId;
224
  }
225
 
226
+ private function getCurrentCurrencyCode(Mage_Sales_Model_Quote_Address $quoteAddress){
227
+ $store = Mage::app()->getStore();
228
+ if ($quoteAddress->getQuote() != null && $quoteAddress->getQuote()->getStoreId() != null){
229
+ $store = $quoteAddress->getQuote()->getStore();
230
+ }
231
+ $currency = $store->getBaseCurrencyCode();
232
  if ($currency == null) $currency = 'USD';
233
  return $currency;
234
  }
262
  $invoiceRequest->setPurchaseOrderNumber(self::PO_ESTIMATE_TEXT .$quoteAddress->getId());
263
  $invoiceRequest->setShipTo($shipToAddress);
264
  $invoiceRequest->setBillTo($billingAddress);
265
+ $invoiceRequest->setCurrencyCode($this->getCurrentCurrencyCode($quoteAddress));
266
  $invoiceRequest->setShipFrom($merchantSettings->getExactorShippingAddress());
267
  $invoiceRequest->setExemptionId($this->getExemptionIdForQuoteAddress($quoteAddress, $merchantSettings));
268
  // Line items list
app/code/local/Exactor/Tax/Model/Sales/Total/Quote/Tax.php CHANGED
@@ -170,6 +170,22 @@ class Exactor_Tax_Model_Sales_Total_Quote_Tax extends Mage_Sales_Model_Quote_Add
170
  foreach ($address->getAllItems() as $item){
171
  $shippingTax -= $item->getTaxAmount();
172
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  $address->setShippingTaxAmount($shippingTax);
174
  $address->setBaseShippingTaxAmount($shippingTax);
175
  }
170
  foreach ($address->getAllItems() as $item){
171
  $shippingTax -= $item->getTaxAmount();
172
  }
173
+ // The following code is workaraund for the bug in Magento 1.6.2 - Tax applied to the QuoteAddress object
174
+ // can be missed by Magento for some reason. This issue can be reproduced in very trickily manner:
175
+ // 1. login
176
+ // 2. add product to the cart
177
+ // 3. logout
178
+ // 4. login again
179
+ // 5. proceed to purchase
180
+ // 6. select FREE SHIPPING
181
+ // 7. tax will be zero in front-end, negative in fact. The reason - $address->getTaxAmount() will return 0,
182
+ // while line items still contains valid tax
183
+ // IMPORTANT: Issue can be reproduced only once per session (first attempt), thus you should clear cookies before login.
184
+ if ($shippingTax < 0){
185
+ $this->applyTax(-1 * $shippingTax);
186
+ $shippingTax = 0;
187
+ }
188
+ //
189
  $address->setShippingTaxAmount($shippingTax);
190
  $address->setBaseShippingTaxAmount($shippingTax);
191
  }
lib/ExactorCommons/ExactorCommons.php CHANGED
@@ -635,7 +635,7 @@ class ExactorProcessingService{
635
  $response = ExactorConnectionFactory::getInstance()->buildExactorConnector()->sendRequest($request);
636
  // Do callback to the plugin
637
  if ($response->hasErrors()){
638
- if ($response->getFirstError()->getErrorCode() == ErrorResponseType::ERROR_INVALID){
639
  $commitRequest->setCommitDate(new DateTime());
640
  $response = ExactorConnectionFactory::getInstance()->buildExactorConnector()->sendRequest($request);
641
  if ($response->hasErrors()){
635
  $response = ExactorConnectionFactory::getInstance()->buildExactorConnector()->sendRequest($request);
636
  // Do callback to the plugin
637
  if ($response->hasErrors()){
638
+ if ($response->getFirstError()->getErrorCode() == ErrorResponseType::ERROR_INVALID_COMMIT_DATE){
639
  $commitRequest->setCommitDate(new DateTime());
640
  $response = ExactorConnectionFactory::getInstance()->buildExactorConnector()->sendRequest($request);
641
  if ($response->hasErrors()){
lib/ExactorCommons/ExactorDomainObjects.php CHANGED
@@ -216,7 +216,7 @@ class LineItemType extends XmlSerializationSupport {
216
  public $SKU;
217
  public $Description;
218
  public $Quantity=1;
219
- public $GrossAmount;
220
  public $BillTo;
221
  public $ShipTo;
222
  public $ShipFrom;
216
  public $SKU;
217
  public $Description;
218
  public $Quantity=1;
219
+ public $GrossAmount=0;
220
  public $BillTo;
221
  public $ShipTo;
222
  public $ShipFrom;
lib/ExactorCommons/config.php CHANGED
@@ -6,6 +6,6 @@
6
  */
7
 
8
  ExactorLoggingFactory::getInstance()->setup('MagentoLogger', IExactorLogger::TRACE);
9
- ExactorConnectionFactory::getInstance()->setup('Magento','v20120619');
10
  ExactorProcessingServiceFactory::getInstance()->setup(new MagentoExactorCallback());
11
 
6
  */
7
 
8
  ExactorLoggingFactory::getInstance()->setup('MagentoLogger', IExactorLogger::TRACE);
9
+ ExactorConnectionFactory::getInstance()->setup('Magento','v20120723');
10
  ExactorProcessingServiceFactory::getInstance()->setup(new MagentoExactorCallback());
11
 
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Mage_Exactor_Tax</name>
4
- <version>2012.06.19</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
@@ -12,9 +12,9 @@ Once installed, neither the merchant, nor the customer, need to perform any addi
12
  For additional information, please refer to the Exactor Magento User Guide that is attached to the plug-in, or which you can download directly from the Exactor control panel (navigate to Account Management Integration Points &amp; PlugIns).</description>
13
  <notes>Supported Magento 1.5.0.0 - 1.7.x</notes>
14
  <authors><author><name>Exactor, Inc.</name><user>exactor</user><email>support@exactor.com</email></author></authors>
15
- <date>2012-06-21</date>
16
- <time>09:40:11</time>
17
- <contents><target name="magelocal"><dir name="Exactor"><dir name="Core"><dir name="Helper"><file name="SessionCache.php" hash="4aab06767188e8ead64043654989473d"/></dir><dir name="Model"><file name="ExactorTransaction.php" hash="852aa20f6e3b7aa0001439d4bffe9724"/><file name="MerchantSettings.php" hash="b4c2acde5dfa929e89ea7ec9fe0f1b2f"/><dir name="Mysql4"><dir name="ExactorTransaction"><file name="Collection.php" hash="c7b890b4d3ab35e65a3856ae0e2fdf72"/></dir><file name="ExactorTransaction.php" hash="c91aebaae767613acf1c439a8b513c3b"/><dir name="MerchantSettings"><file name="Collection.php" hash="c1593f52e582e601409c4651c37495af"/><file name="Collection.php~" hash="d360e202eb30432ac41dc023ce13ffc0"/></dir><file name="MerchantSettings.php" hash="8f22b76bb64cdc7b1deb6f0e38889905"/></dir><dir name="Type"><file name="Onepage.php" hash="2d2aa64ed4562736e77b3cad12e8f48c"/></dir></dir><dir name="etc"><file name="config.xml" hash="50c2cdf232f06125484ac8a715024262"/></dir></dir><dir name="ExactorSettings"><dir name="Block"><file name="Form.php" hash="7dcfb00922cfe305d8ae08cb20ca5e87"/></dir><dir name="Helper"><file name="Data.php" hash="9abafb58b091f8976fa289f394465415"/><file name="VersionResolver.php" hash="14dce068dfe2a7d3364c4bd29e6f8431"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FormController.php" hash="a154f13f8c4c04f838dfb79607078341"/></dir><file name="AjaxController.php" hash="c07aeeca00e1408e52945fc027569793"/><file name="IndexController.php" hash="f47cbc274dd68c57c30b60bbee69259e"/></dir><dir name="etc"><file name="config.xml" hash="6c2f28c302b359abd12565264fa23bc5"/></dir><dir name="sql"><dir name="ExactorSettings_setup"><file name="mysql4-install-14.04.2012.php" hash="f35af1e12921b57479cb4b5677937a0c"/></dir></dir></dir><dir name="Sales"><dir name="Model"><file name="Observer.php" hash="65e826c0493adece2476ed24788ecb06"/></dir><dir name="etc"><file name="config.xml" hash="2d6c2557632003318da9e3165944ecc6"/></dir></dir><dir name="Tax"><dir name="Helper"><file name="Calculation.php" hash="29c5252bdd48b173c90588f449114024"/><file name="Mapping.php" hash="64c6e0cc3ddb49a836dbbe92b2f97d35"/></dir><dir name="Model"><dir name="Sales"><dir name="Total"><dir name="Quote"><dir name="Nominal"><file name="Tax.php" hash="156eff380df5b16db55449759f193490"/></dir><file name="Tax.php" hash="908dad83333e61933684a9404b13769d"/></dir></dir></dir></dir><dir name="etc"><file name="config.xml" hash="9a653c98a67e3743f45618d0890aab00"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="exactorsettings.xml" hash="3707eac08d2393c8796eebf1cf7a0bd9"/><file name="exactoronestepcheckout.xml" hash="9fdfa1db5e4e60b4eec8f348c10aab07"/></dir><dir name="template"><dir name="ExactorSettings"><file name="settingsform.phtml" hash="c77a9c5461dbb37f0a8835e55f48f1d6"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="exactoronestepcheckout.xml" hash="9fdfa1db5e4e60b4eec8f348c10aab07"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Exactor.xml" hash="e8997e8e36a265141b37790caaef39d6"/></dir></target><target name="mageweb"><dir name="js"><dir name="exactor"><file name="exactor.js" hash="5c23e40f4034e50a6e0df5b1c708b7e1"/></dir></dir></target><target name="magelib"><dir name="ExactorCommons"><file name="ExactorCommons.php" hash="b78ebfdd66c36c419a312fc5c2d1b4bd"/><file name="ExactorDomainObjects.php" hash="3633afb09bd82b35ed141c1200906097"/><file name="Magento.php" hash="76da7333fe0692053a47f8564c7b513a"/><file name="XmlProcessing.php" hash="383fd21839889d720e2094e83ccc7a2a"/><file name="config.php" hash="d921f8e8f9891e2c2cb44bdcd699bfd5"/><file name="config.php~" hash="f12c65295b05793efd89dd64748282d1"/></dir></target></contents>
18
  <compatible/>
19
  <dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php></required></dependencies>
20
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Mage_Exactor_Tax</name>
4
+ <version>2012.07.23</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
12
  For additional information, please refer to the Exactor Magento User Guide that is attached to the plug-in, or which you can download directly from the Exactor control panel (navigate to Account Management Integration Points &amp; PlugIns).</description>
13
  <notes>Supported Magento 1.5.0.0 - 1.7.x</notes>
14
  <authors><author><name>Exactor, Inc.</name><user>exactor</user><email>support@exactor.com</email></author></authors>
15
+ <date>2012-07-23</date>
16
+ <time>16:15:21</time>
17
+ <contents><target name="magelocal"><dir name="Exactor"><dir name="Core"><dir name="Helper"><file name="SessionCache.php" hash="4aab06767188e8ead64043654989473d"/></dir><dir name="Model"><file name="ExactorTransaction.php" hash="852aa20f6e3b7aa0001439d4bffe9724"/><file name="MerchantSettings.php" hash="b4c2acde5dfa929e89ea7ec9fe0f1b2f"/><dir name="Mysql4"><dir name="ExactorTransaction"><file name="Collection.php" hash="c7b890b4d3ab35e65a3856ae0e2fdf72"/></dir><file name="ExactorTransaction.php" hash="c91aebaae767613acf1c439a8b513c3b"/><dir name="MerchantSettings"><file name="Collection.php" hash="c1593f52e582e601409c4651c37495af"/><file name="Collection.php~" hash="d360e202eb30432ac41dc023ce13ffc0"/></dir><file name="MerchantSettings.php" hash="8f22b76bb64cdc7b1deb6f0e38889905"/></dir><dir name="Type"><file name="Onepage.php" hash="2441fb08bbeb579831cea4d3fbd31104"/></dir></dir><dir name="etc"><file name="config.xml" hash="98ecc82a5f7b74ac0bfc0f7ab512afdb"/></dir></dir><dir name="ExactorSettings"><dir name="Block"><file name="Form.php" hash="7dcfb00922cfe305d8ae08cb20ca5e87"/></dir><dir name="Helper"><file name="Data.php" hash="a23bb9c251f0dbb77c107d01dde39e86"/><file name="VersionResolver.php" hash="14dce068dfe2a7d3364c4bd29e6f8431"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FormController.php" hash="a154f13f8c4c04f838dfb79607078341"/></dir><file name="AjaxController.php" hash="c07aeeca00e1408e52945fc027569793"/><file name="IndexController.php" hash="f47cbc274dd68c57c30b60bbee69259e"/></dir><dir name="etc"><file name="config.xml" hash="6c2f28c302b359abd12565264fa23bc5"/></dir><dir name="sql"><dir name="ExactorSettings_setup"><file name="mysql4-install-14.04.2012.php" hash="f35af1e12921b57479cb4b5677937a0c"/></dir></dir></dir><dir name="Sales"><dir name="Model"><file name="Observer.php" hash="597c015390a1c0d8e327aaa17d756be3"/></dir><dir name="etc"><file name="config.xml" hash="38b42ea182d95847903f9ddfda67b282"/></dir></dir><dir name="Tax"><dir name="Helper"><file name="Calculation.php" hash="29c5252bdd48b173c90588f449114024"/><file name="Mapping.php" hash="31e761acdecabb2cbfd744c88c60fcbe"/></dir><dir name="Model"><dir name="Sales"><dir name="Total"><dir name="Quote"><dir name="Nominal"><file name="Tax.php" hash="156eff380df5b16db55449759f193490"/></dir><file name="Tax.php" hash="15fce92e8f6bc2caf0ce09df51cf81a4"/></dir></dir></dir></dir><dir name="etc"><file name="config.xml" hash="9a653c98a67e3743f45618d0890aab00"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="exactorsettings.xml" hash="3707eac08d2393c8796eebf1cf7a0bd9"/><file name="exactoronestepcheckout.xml" hash="9fdfa1db5e4e60b4eec8f348c10aab07"/></dir><dir name="template"><dir name="ExactorSettings"><file name="settingsform.phtml" hash="c77a9c5461dbb37f0a8835e55f48f1d6"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="exactoronestepcheckout.xml" hash="9fdfa1db5e4e60b4eec8f348c10aab07"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Exactor.xml" hash="e8997e8e36a265141b37790caaef39d6"/></dir></target><target name="mageweb"><dir name="js"><dir name="exactor"><file name="exactor.js" hash="5c23e40f4034e50a6e0df5b1c708b7e1"/></dir></dir></target><target name="magelib"><dir name="ExactorCommons"><file name="ExactorCommons.php" hash="1a9ffaa25007a2b6eb170905ecaed97e"/><file name="ExactorDomainObjects.php" hash="d69c2827a03213386b861076ad75e33a"/><file name="Magento.php" hash="76da7333fe0692053a47f8564c7b513a"/><file name="XmlProcessing.php" hash="383fd21839889d720e2094e83ccc7a2a"/><file name="config.php" hash="b33630997120f36b5470626f98dc372a"/><file name="config.php~" hash="f12c65295b05793efd89dd64748282d1"/></dir></target></contents>
18
  <compatible/>
19
  <dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php></required></dependencies>
20
  </package>