Version Notes
Notes
Download this release
Release Info
Developer | Bobby Burden |
Extension | iparcel_carthandoff |
Version | 1.6.2 |
Comparing to | |
See all releases |
Code changes from version 1.6.1 to 1.6.2
- app/code/community/Iparcel/CartHandoff/Helper/Api.php +24 -1
- app/code/community/Iparcel/CartHandoff/Model/Observer.php +5 -0
- app/code/community/Iparcel/CartHandoff/Model/Resource/Txid.php +19 -0
- app/code/community/Iparcel/CartHandoff/Model/Resource/Txid/Collection.php +19 -0
- app/code/community/Iparcel/CartHandoff/Model/Txid.php +30 -0
- app/code/community/Iparcel/CartHandoff/controllers/HandoffController.php +150 -62
- app/code/community/Iparcel/CartHandoff/etc/config.xml +4 -1
- app/code/community/Iparcel/CartHandoff/sql/ipcarthandoff_setup/mysql4-upgrade-1.6.1-1.6.2.php +17 -0
- package.xml +4 -4
app/code/community/Iparcel/CartHandoff/Helper/Api.php
CHANGED
@@ -154,9 +154,20 @@ class Iparcel_CartHandoff_Helper_Api extends Iparcel_All_Helper_Api
|
|
154 |
$total += $totals[$key]->getValue();
|
155 |
}
|
156 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
|
158 |
$request['discount_amount_cart'] = round(
|
159 |
-
$total - $quote->getGrandTotal(),
|
160 |
2
|
161 |
);
|
162 |
|
@@ -846,6 +857,18 @@ class Iparcel_CartHandoff_Helper_Api extends Iparcel_All_Helper_Api
|
|
846 |
$prepaidAmount += $credit->getStorecreditAmount();
|
847 |
}
|
848 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
849 |
}
|
850 |
|
851 |
return $prepaidAmount;
|
154 |
$total += $totals[$key]->getValue();
|
155 |
}
|
156 |
}
|
157 |
+
|
158 |
+
// Support for Unirgy_GiftCert
|
159 |
+
$unirgyGiftCert = 0;
|
160 |
+
if (class_exists('Unirgy_Giftcert_Model_Quote_Total', false)) {
|
161 |
+
$unirgyTotals = $quote->getTotals();
|
162 |
+
$unirgyTotals = $unirgyTotals['ugiftcert'];
|
163 |
+
|
164 |
+
if (is_object($unirgyTotals)) {
|
165 |
+
$unirgyGiftCert = $unirgyTotals->getData('value');
|
166 |
+
}
|
167 |
+
}
|
168 |
|
169 |
$request['discount_amount_cart'] = round(
|
170 |
+
$total - ($quote->getGrandTotal() + $unirgyGiftCert),
|
171 |
2
|
172 |
);
|
173 |
|
857 |
$prepaidAmount += $credit->getStorecreditAmount();
|
858 |
}
|
859 |
}
|
860 |
+
} elseif ($quote->getGiftCardsAmountUsed()) {
|
861 |
+
$prepaidAmount = $quote->getGiftCardsAmountUsed();
|
862 |
+
}
|
863 |
+
|
864 |
+
// Support for Unirgy GiftCert
|
865 |
+
if (class_exists('Unirgy_Giftcert_Model_Quote_Total', false)) {
|
866 |
+
$unirgyTotals = $quote->getTotals();
|
867 |
+
$unirgyTotals = $unirgyTotals['ugiftcert'];
|
868 |
+
|
869 |
+
if (is_object($unirgyTotals)) {
|
870 |
+
$prepaidAmount += $unirgyTotals->getData('value');
|
871 |
+
}
|
872 |
}
|
873 |
|
874 |
return $prepaidAmount;
|
app/code/community/Iparcel/CartHandoff/Model/Observer.php
CHANGED
@@ -35,6 +35,11 @@ class Iparcel_CartHandoff_Model_Observer
|
|
35 |
}
|
36 |
}
|
37 |
|
|
|
|
|
|
|
|
|
|
|
38 |
$block->setMethods($methods);
|
39 |
}
|
40 |
}
|
35 |
}
|
36 |
}
|
37 |
|
38 |
+
// Make sure that our payment method is set if applicable
|
39 |
+
if (count($methods) == 0) {
|
40 |
+
$methods[] = $paymentMethod;
|
41 |
+
}
|
42 |
+
|
43 |
$block->setMethods($methods);
|
44 |
}
|
45 |
}
|
app/code/community/Iparcel/CartHandoff/Model/Resource/Txid.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Resource Model for Iparcel_Carthandoff_Model_Txid
|
4 |
+
*
|
5 |
+
* @category Iparcel
|
6 |
+
* @package Iparcel_CartHandoff
|
7 |
+
* @author Bobby Burden <bburden@i-parcel.com>
|
8 |
+
*/
|
9 |
+
class Iparcel_Carthandoff_Model_Resource_Txid
|
10 |
+
extends Mage_Core_Model_Resource_Db_Abstract
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Initializing Resource
|
14 |
+
*/
|
15 |
+
protected function _construct()
|
16 |
+
{
|
17 |
+
$this->_init('ipcarthandoff/txid', 'id');
|
18 |
+
}
|
19 |
+
}
|
app/code/community/Iparcel/CartHandoff/Model/Resource/Txid/Collection.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Collection model for Iparcel_CartHandoff_Model_Txid
|
4 |
+
*
|
5 |
+
* @category Iparcel
|
6 |
+
* @package Iparcel_CartHandoff
|
7 |
+
* @author Bobby Burden <bburden@i-parcel.com>
|
8 |
+
*/
|
9 |
+
class Iparcel_CartHandoff_Model_Resource_Txid_Collection
|
10 |
+
extends Mage_Core_Model_Resource_Db_Collection_Abstract
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Initializing Resource Collection
|
14 |
+
*/
|
15 |
+
public function _construct()
|
16 |
+
{
|
17 |
+
$this->_init('ipcarthandoff/txid');
|
18 |
+
}
|
19 |
+
}
|
app/code/community/Iparcel/CartHandoff/Model/Txid.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Model for storing history of TX IDs used with CartHandoff
|
4 |
+
*
|
5 |
+
* @category Iparcel
|
6 |
+
* @package Iparcel_CartHandoff
|
7 |
+
* @author Bobby Burden <bburden@i-parcel.com>
|
8 |
+
*/
|
9 |
+
class Iparcel_CartHandoff_Model_Txid extends Mage_Core_Model_Abstract
|
10 |
+
{
|
11 |
+
/**
|
12 |
+
* Initialize resource model
|
13 |
+
*/
|
14 |
+
protected function _construct()
|
15 |
+
{
|
16 |
+
$this->_init('ipcarthandoff/txid');
|
17 |
+
}
|
18 |
+
|
19 |
+
public function loadByTxid($txid) {
|
20 |
+
$txid = $this->getCollection()
|
21 |
+
->addFieldToFilter('txid', $txid)
|
22 |
+
->getFirstItem();
|
23 |
+
|
24 |
+
if ($txid->getId()) {
|
25 |
+
return $txid;
|
26 |
+
}
|
27 |
+
|
28 |
+
return false;
|
29 |
+
}
|
30 |
+
}
|
app/code/community/Iparcel/CartHandoff/controllers/HandoffController.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Controller for handling Cart Handoff
|
4 |
*
|
@@ -10,6 +11,7 @@ class Iparcel_CartHandoff_HandoffController extends Mage_Core_Controller_Front_A
|
|
10 |
{
|
11 |
protected $_session = null;
|
12 |
protected $_quote = null;
|
|
|
13 |
|
14 |
/**
|
15 |
* Grab user's checkout session and quote
|
@@ -38,8 +40,9 @@ class Iparcel_CartHandoff_HandoffController extends Mage_Core_Controller_Front_A
|
|
38 |
$customer = $this->_quote->getCustomer();
|
39 |
|
40 |
if (!Mage::helper('checkout')->isAllowedGuestCheckout(
|
41 |
-
|
42 |
-
|
|
|
43 |
) {
|
44 |
// Prevent guests from checking out
|
45 |
$this->_session->setBeforeAuthUrl(
|
@@ -129,30 +132,74 @@ class Iparcel_CartHandoff_HandoffController extends Mage_Core_Controller_Front_A
|
|
129 |
public function returnAction()
|
130 |
{
|
131 |
$transactionId = $this->getRequest()->getParam('tx');
|
|
|
132 |
$apiHelper = Mage::helper('ipcarthandoff/api');
|
133 |
|
134 |
-
$
|
135 |
-
$transactionId
|
136 |
-
$this->_session
|
137 |
-
);
|
138 |
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
return;
|
146 |
} else {
|
147 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
}
|
149 |
|
|
|
|
|
|
|
150 |
$this->_prepareSuccessPage($order);
|
151 |
$this->loadLayout();
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
);
|
157 |
$this->renderLayout();
|
158 |
|
@@ -165,35 +212,7 @@ class Iparcel_CartHandoff_HandoffController extends Mage_Core_Controller_Front_A
|
|
165 |
*/
|
166 |
public function paymentReturnAction()
|
167 |
{
|
168 |
-
|
169 |
-
$apiHelper = Mage::helper('ipcarthandoff/api');
|
170 |
-
|
171 |
-
$checkoutDetailsResponse = $apiHelper->getCheckoutDetails(
|
172 |
-
$transactionId,
|
173 |
-
$this->_session
|
174 |
-
);
|
175 |
-
|
176 |
-
// Handle error status
|
177 |
-
if ($checkoutDetailsResponse->status == 'FAILED'
|
178 |
-
|| property_exists($checkoutDetailsResponse, 'status') == false
|
179 |
-
) {
|
180 |
-
$this->_session->addError($checkoutDetailsResponse->message);
|
181 |
-
$this->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));
|
182 |
-
return;
|
183 |
-
} else {
|
184 |
-
$order = $this->_buildOrder($checkoutDetailsResponse, $this->_session);
|
185 |
-
}
|
186 |
-
|
187 |
-
|
188 |
-
// Show the order review page
|
189 |
-
$this->_prepareSuccessPage($order);
|
190 |
-
$this->loadLayout();
|
191 |
-
Mage::dispatchEvent('checkout_onepage_controller_success_action',
|
192 |
-
array(
|
193 |
-
'order_ids' => $this->_orderIds
|
194 |
-
)
|
195 |
-
);
|
196 |
-
$this->renderLayout();
|
197 |
}
|
198 |
|
199 |
/**
|
@@ -255,32 +274,44 @@ class Iparcel_CartHandoff_HandoffController extends Mage_Core_Controller_Front_A
|
|
255 |
* @param object $response Response from the API
|
256 |
* @param object $session User's session
|
257 |
* @return mixed Order is returned on success. Error string on failure
|
|
|
258 |
*/
|
259 |
private function _buildOrder($response, $session)
|
260 |
{
|
261 |
-
|
262 |
$quoteId = $response->reference_number;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
$quote = Mage::getModel('sales/quote')->load($quoteId);
|
264 |
$session = $session->replaceQuote($quote);
|
265 |
|
266 |
try {
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
->loadOrderByTrackingNumber($response->trackingnumber);
|
271 |
-
|
272 |
-
if ($order == false) {
|
273 |
-
$order = Mage::helper('ipcarthandoff/api')->buildOrder(
|
274 |
-
$session->getQuote(), $response
|
275 |
-
);
|
276 |
-
}
|
277 |
} catch (Exception $e) {
|
278 |
Mage::logException($e);
|
279 |
-
// This catches any
|
280 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
281 |
$order = $this->_loadAndVerify($response, $quote);
|
282 |
|
283 |
if ($order == false) {
|
|
|
|
|
|
|
|
|
284 |
/**
|
285 |
* If the Magento order cannot be created, or was created incorrectly,
|
286 |
* attempt to load the order and cancel it if it exists.
|
@@ -289,15 +320,29 @@ class Iparcel_CartHandoff_HandoffController extends Mage_Core_Controller_Front_A
|
|
289 |
$order->loadByAttribute('quote_id', $quote->getId());
|
290 |
|
291 |
if ($order->getId() != null) {
|
|
|
|
|
|
|
292 |
$order->cancel();
|
293 |
}
|
294 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
295 |
// Should only hit this point if there is no way to recover from
|
296 |
// errors during order creation
|
297 |
return $e->getMessage();
|
298 |
}
|
299 |
}
|
300 |
|
|
|
|
|
|
|
|
|
301 |
return $order;
|
302 |
}
|
303 |
|
@@ -329,9 +374,9 @@ class Iparcel_CartHandoff_HandoffController extends Mage_Core_Controller_Front_A
|
|
329 |
}
|
330 |
|
331 |
$responseGrandTotal = $responseGrandTotal
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
$responseGrandTotal -= $response->discount_amount_cart;
|
336 |
|
337 |
// Verify that the order totals match the information in the response.
|
@@ -349,4 +394,47 @@ class Iparcel_CartHandoff_HandoffController extends Mage_Core_Controller_Front_A
|
|
349 |
|
350 |
return false;
|
351 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
352 |
}
|
1 |
<?php
|
2 |
+
|
3 |
/**
|
4 |
* Controller for handling Cart Handoff
|
5 |
*
|
11 |
{
|
12 |
protected $_session = null;
|
13 |
protected $_quote = null;
|
14 |
+
protected $iparcelLogfile = 'iparcel_carthandoff.log';
|
15 |
|
16 |
/**
|
17 |
* Grab user's checkout session and quote
|
40 |
$customer = $this->_quote->getCustomer();
|
41 |
|
42 |
if (!Mage::helper('checkout')->isAllowedGuestCheckout(
|
43 |
+
$this->_quote,
|
44 |
+
$this->_quote->getStoreId()
|
45 |
+
) && $customer->getId() == null
|
46 |
) {
|
47 |
// Prevent guests from checking out
|
48 |
$this->_session->setBeforeAuthUrl(
|
132 |
public function returnAction()
|
133 |
{
|
134 |
$transactionId = $this->getRequest()->getParam('tx');
|
135 |
+
$this->logToFile('returnAction(): Processing tx: ' . $transactionId);
|
136 |
$apiHelper = Mage::helper('ipcarthandoff/api');
|
137 |
|
138 |
+
$txid = Mage::getModel('ipcarthandoff/txid')
|
139 |
+
->loadByTxid($transactionId);
|
|
|
|
|
140 |
|
141 |
+
if (is_object($txid)) {
|
142 |
+
if ($txid->getProcessing()) {
|
143 |
+
$this->logToFile('returnAction(): Waiting on ' . $transactionId . ' to finish processing.');
|
144 |
+
// We're still working on this order
|
145 |
+
$this->_waitForTxidProcessing($txid);
|
146 |
+
}
|
|
|
147 |
} else {
|
148 |
+
$txid = Mage::getModel('ipcarthandoff/txid')
|
149 |
+
->setTxid($transactionId);
|
150 |
+
}
|
151 |
+
|
152 |
+
$txid->setProcessing(true);
|
153 |
+
$txid->save();
|
154 |
+
|
155 |
+
$this->logToFile('returnAction(): Attempting to laod order with Tracking Number ' . $transactionId);
|
156 |
+
// Make sure the order doesn't exist before calling GetCheckoutDetails
|
157 |
+
$order = Mage::helper('ipcarthandoff')
|
158 |
+
->loadOrderByTrackingNumber($transactionId);
|
159 |
+
|
160 |
+
if ($order == false) {
|
161 |
+
$this->logToFile('returnAction(): Calling getCheckoutDetails for ' . $transactionId);
|
162 |
+
$checkoutDetailsResponse = $apiHelper->getCheckoutDetails(
|
163 |
+
$transactionId,
|
164 |
+
$this->_session
|
165 |
+
);
|
166 |
+
|
167 |
+
// Handle error status
|
168 |
+
if ($checkoutDetailsResponse->status == 'FAILED'
|
169 |
+
|| property_exists($checkoutDetailsResponse, 'status') == false
|
170 |
+
) {
|
171 |
+
$this->logToFile('returnAction(): Error from GetCheckoutDetails on ' . $transactionId . ' -- ' . $checkoutDetailsResponse->message);
|
172 |
+
$this->_session->addError($checkoutDetailsResponse->message);
|
173 |
+
$this->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));
|
174 |
+
$txid->setProcessing(false);
|
175 |
+
$txid->save();
|
176 |
+
return;
|
177 |
+
} else {
|
178 |
+
$this->logToFile('returnAction(): Calling _buildOrder for ' . $transactionId);
|
179 |
+
$order = $this->_buildOrder(
|
180 |
+
$checkoutDetailsResponse,
|
181 |
+
$this->_session,
|
182 |
+
$txid
|
183 |
+
);
|
184 |
+
}
|
185 |
}
|
186 |
|
187 |
+
$txid->setProcessing(false);
|
188 |
+
$txid->save();
|
189 |
+
|
190 |
$this->_prepareSuccessPage($order);
|
191 |
$this->loadLayout();
|
192 |
+
$this->logToFile(
|
193 |
+
'returnAction(): Building order review page for Order ID '
|
194 |
+
. join(', ', $this->_orderIds)
|
195 |
+
. ' and tx: '
|
196 |
+
. $transactionId
|
197 |
+
);
|
198 |
+
Mage::dispatchEvent(
|
199 |
+
'checkout_onepage_controller_success_action',
|
200 |
+
array(
|
201 |
+
'order_ids' => $this->_orderIds
|
202 |
+
)
|
203 |
);
|
204 |
$this->renderLayout();
|
205 |
|
212 |
*/
|
213 |
public function paymentReturnAction()
|
214 |
{
|
215 |
+
return $this->returnAction();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
}
|
217 |
|
218 |
/**
|
274 |
* @param object $response Response from the API
|
275 |
* @param object $session User's session
|
276 |
* @return mixed Order is returned on success. Error string on failure
|
277 |
+
* @internal param object $txid Txid object to keep current status
|
278 |
*/
|
279 |
private function _buildOrder($response, $session)
|
280 |
{
|
281 |
+
// Pull the quote ID from the response. Apply it to the current session
|
282 |
$quoteId = $response->reference_number;
|
283 |
+
$txId = $response->trackingnumber;
|
284 |
+
$this->logToFile(
|
285 |
+
'_buildOrder(): Loading quote ID '
|
286 |
+
. $quoteId
|
287 |
+
. ' for TXID: '
|
288 |
+
. $txId
|
289 |
+
);
|
290 |
$quote = Mage::getModel('sales/quote')->load($quoteId);
|
291 |
$session = $session->replaceQuote($quote);
|
292 |
|
293 |
try {
|
294 |
+
$order = Mage::helper('ipcarthandoff/api')->buildOrder(
|
295 |
+
$session->getQuote(), $response
|
296 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
297 |
} catch (Exception $e) {
|
298 |
Mage::logException($e);
|
299 |
+
// This catches any exceptions thrown during order creation.
|
300 |
|
301 |
+
$this->logToFile(
|
302 |
+
'_buildOrder(): Failed to build order for tx ' . $txId
|
303 |
+
);
|
304 |
+
|
305 |
+
$this->logToFile(
|
306 |
+
'_buildOrder(): Attempting to recover tx ' . $txId
|
307 |
+
);
|
308 |
$order = $this->_loadAndVerify($response, $quote);
|
309 |
|
310 |
if ($order == false) {
|
311 |
+
$this->logToFile(
|
312 |
+
'_buildOrder(): Unable to recover tx ' . $txId
|
313 |
+
);
|
314 |
+
|
315 |
/**
|
316 |
* If the Magento order cannot be created, or was created incorrectly,
|
317 |
* attempt to load the order and cancel it if it exists.
|
320 |
$order->loadByAttribute('quote_id', $quote->getId());
|
321 |
|
322 |
if ($order->getId() != null) {
|
323 |
+
$this->logToFile(
|
324 |
+
'_buildOrder(): Canceling Magento Order ID ' . $order->getId()
|
325 |
+
);
|
326 |
$order->cancel();
|
327 |
}
|
328 |
|
329 |
+
$this->logToFile(
|
330 |
+
'_buildOrder(): Error message when building order for tx '
|
331 |
+
. $txId
|
332 |
+
. ' : '
|
333 |
+
. $e->getMessage()
|
334 |
+
);
|
335 |
+
|
336 |
// Should only hit this point if there is no way to recover from
|
337 |
// errors during order creation
|
338 |
return $e->getMessage();
|
339 |
}
|
340 |
}
|
341 |
|
342 |
+
$this->logToFile(
|
343 |
+
'_buildOrder(): Successfully built order for tx ' . $txId
|
344 |
+
);
|
345 |
+
|
346 |
return $order;
|
347 |
}
|
348 |
|
374 |
}
|
375 |
|
376 |
$responseGrandTotal = $responseGrandTotal
|
377 |
+
+ $response->shipping_cost
|
378 |
+
+ $response->duty
|
379 |
+
+ $response->tax;
|
380 |
$responseGrandTotal -= $response->discount_amount_cart;
|
381 |
|
382 |
// Verify that the order totals match the information in the response.
|
394 |
|
395 |
return false;
|
396 |
}
|
397 |
+
|
398 |
+
/**
|
399 |
+
* Waits for $txid processing to finish
|
400 |
+
*
|
401 |
+
* @param $txid
|
402 |
+
* @return bool
|
403 |
+
*/
|
404 |
+
public function _waitForTxidProcessing($txid)
|
405 |
+
{
|
406 |
+
$waitTime = 10;
|
407 |
+
if ($txid->getProcessing() == false) {
|
408 |
+
return true;
|
409 |
+
}
|
410 |
+
|
411 |
+
$id = $txid->getId();
|
412 |
+
while ($waitTime > 0) {
|
413 |
+
$txid = Mage::getModel('ipcarthandoff/txid')->load($id);
|
414 |
+
|
415 |
+
if ($txid->getProcessing() == false) {
|
416 |
+
return true;
|
417 |
+
}
|
418 |
+
|
419 |
+
sleep(1);
|
420 |
+
$waitTime--;
|
421 |
+
}
|
422 |
+
|
423 |
+
$this->_session->addError("Cannot process order.");
|
424 |
+
$this->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));
|
425 |
+
|
426 |
+
return;
|
427 |
+
}
|
428 |
+
|
429 |
+
/**
|
430 |
+
* Log messages to the IPARCEL_LOGFILE
|
431 |
+
*
|
432 |
+
* @param string $message
|
433 |
+
* @return bool
|
434 |
+
*/
|
435 |
+
public function logToFile($message)
|
436 |
+
{
|
437 |
+
Mage::log($message, null, $this->iparcelLogfile, true);
|
438 |
+
return true;
|
439 |
+
}
|
440 |
}
|
app/code/community/Iparcel/CartHandoff/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Iparcel_CartHandoff>
|
5 |
-
<version>1.6.
|
6 |
</Iparcel_CartHandoff>
|
7 |
</modules>
|
8 |
<global>
|
@@ -17,6 +17,9 @@
|
|
17 |
<checkitems>
|
18 |
<table>iparcel_carthandoff_checkitems_cache</table>
|
19 |
</checkitems>
|
|
|
|
|
|
|
20 |
</entities>
|
21 |
</ipcarthandoff_resource>
|
22 |
<sales>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Iparcel_CartHandoff>
|
5 |
+
<version>1.6.2</version>
|
6 |
</Iparcel_CartHandoff>
|
7 |
</modules>
|
8 |
<global>
|
17 |
<checkitems>
|
18 |
<table>iparcel_carthandoff_checkitems_cache</table>
|
19 |
</checkitems>
|
20 |
+
<txid>
|
21 |
+
<table>iparcel_carthandoff_txids</table>
|
22 |
+
</txid>
|
23 |
</entities>
|
24 |
</ipcarthandoff_resource>
|
25 |
<sales>
|
app/code/community/Iparcel/CartHandoff/sql/ipcarthandoff_setup/mysql4-upgrade-1.6.1-1.6.2.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
$installer->startSetup();
|
5 |
+
|
6 |
+
// Create table to store TX ID history
|
7 |
+
$installer->run("
|
8 |
+
DROP TABLE IF EXISTS {$this->getTable('ipcarthandoff/txid')};
|
9 |
+
CREATE TABLE {$this->getTable('ipcarthandoff/txid')} (
|
10 |
+
`id` int(11) unsigned NOT NULL auto_increment,
|
11 |
+
`txid` varchar(255) NOT NULL,
|
12 |
+
`processing` boolean NOT NULL,
|
13 |
+
PRIMARY KEY (`id`)
|
14 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
15 |
+
");
|
16 |
+
|
17 |
+
$installer->endSetup();
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>iparcel_carthandoff</name>
|
4 |
-
<version>1.6.
|
5 |
<stability>stable</stability>
|
6 |
<license>GPL</license>
|
7 |
<channel>community</channel>
|
@@ -16,9 +16,9 @@
|
|
16 |
<email>bburden@i-parcel.com</email>
|
17 |
</author>
|
18 |
</authors>
|
19 |
-
<date>2017-
|
20 |
-
<time>
|
21 |
-
<contents><target name="mageweb"><dir name="app"><dir name="etc"><dir name="modules"><file name="Iparcel_CartHandoff.xml" hash="ffb746b30fb5ff90dd7807211f6a4e9f"/><file name="Iparcel_All.xml" hash="89e4b47a6ac9aa0b82f70b1539d587ea"/></dir></dir><dir name="code"><dir name="community"><dir name="Iparcel"><dir name="CartHandoff"><dir name="Block"><dir name="Adminhtml"><dir name="Checkitems"><file name="Button.php" hash="996c59c0e070bfe0abcfbc75c33d9181"/></dir></dir><file name="Button.php" hash="f0973ed80adca37577c9183d543ffca6"/><file name="Estimate.php" hash="ed76666cb286b1bd36235c7aa23ab098"/><dir name="Form"><file name="Button.php" hash="15c90ba070756ebc2aec36546dd5854b"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Ipcarthandoff"><dir name="Checkitems"><file name="CacheController.php" hash="dc682b48cd1d76cbe5431340ad15d10b"/></dir></dir></dir><file name="HandoffController.php" hash="b2bd0440b4fc8e143791fda85f511efb"/><file name="StatusController.php" hash="511f645fec406059f956aa915c9138b4"/></dir><dir name="etc"><file name="adminhtml.xml" hash="e4f3a503dfa55aa0540b87d644cf0631"/><file name="config.xml" hash="54d5343116c47c6db8a5d3405c8a766f"/><file name="system.xml" hash="411e0489405c16fe92b3ceb061842b4a"/></dir><dir name="Helper"><file name="Api.php" hash="9088388500a7d6779dba33a10ec26ece"/><file name="Data.php" hash="784eea529c5eae7652cd2741cc5b9214"/></dir><dir name="Model"><dir name="Catalog"><file name="Layer.php" hash="b7410cb6b76bcf6282d0de45fcfd4214"/><dir name="Product"><dir name="Type"><dir name="Configurable"><file name="Price.php" hash="9757c4a3a06ab09e20f505b83197a864"/></dir><file name="Price.php" hash="0b5b030df7a614b880a07642d9166888"/></dir></dir></dir><file name="Checkitems.php" hash="b86446862f8eb0b48cda130dc8e4b83a"/><file name="Observer.php" hash="f7ab4f37d2732fdd39fc8c0231b64910"/><dir name="Checkout"><dir name="Type"><file name="Onepage.php" hash="53d1efca3648682d95070061cba7beef"/></dir></dir><dir name="Observer"><file name="Storecredit.php" hash="f147548263151fa76944c1aeba53723f"/></dir><dir name="Payment"><file name="Free.php" hash="810c0e8e3a208a88bfbcb447997674ee"/><file name="Ipcarthandoff.php" hash="60c52fc039b371c01815dfca6bec4172"/></dir><dir name="Resource"><dir name="Checkitems"><file name="Collection.php" hash="9a488c5a6c0b3d16f63817afd691ae80"/></dir><file name="Checkitems.php" hash="03ba687675e6eef24e6fed32c4767e55"/><dir name="Mysql4"><file name="Setup.php" hash="c7609fb203ba82fa7e1a39457f1edb3b"/></dir></dir><dir name="Sales"><file name="Order.php" hash="93008416ea3552d2adc0ed63016dc7b1"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Buttonplacement.php" hash="7f8a7cfd897ef5a12a082251eb397451"/><file name="Shippingaddress.php" hash="12630442dcf038ee8d7b7bf9b203b0eb"/><dir name="Checkitems"><file name="Cache.php" hash="ea4566851a70fee0473a283a7bfa0a2c"/></dir></dir></dir></dir></dir><dir name="sql"><dir name="ipcarthandoff_setup"><file name="mysql4-upgrade-1.2.0-1.3.0.php" hash="178b64c5cd9aded939a8973d4c0ac3e6"/></dir></dir></dir><dir name="All"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Mapping"><file name="Button.php" hash="dfdaf5a2fbf824a10fccc952fdccf567"/></dir></dir><dir name="Iparcel"><file name="Dashboard.php" hash="ec9dddd10368136f1bdfe79fddd4500c"/><file name="Logs.php" hash="5823bbc2a78666972dd02d5fd3e9d05d"/><file name="Sync.php" hash="ce239afe604653d4b15c739df965fa06"/><dir name="Logs"><file name="Grid.php" hash="9c472c78640c8aecb5de4b638372e6f5"/></dir><dir name="Shipment"><dir name="Split"><file name="Form.php" hash="db44693b1eda47cb1d87b8a69ac9a5a0"/></dir><file name="Split.php" hash="4cb66f91987f842c699bd2d6c42f2249"/></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Method.php" hash="935a3d4adad09d6c049cd6bb4cefb8db"/></dir></dir></dir></dir></dir><dir name="Catalog"><dir name="Product"><file name="List.php" hash="5de6102a56f4a9301f1b81004da39ef8"/></dir><file name="Product.php" hash="71a865c01574fd10ee0ffa7475cee378"/></dir><dir name="Catalogsearch"><dir name="Advanced"><file name="Result.php" hash="ad5a157444b80a284e0f9e7a91187b55"/></dir><file name="Result.php" hash="33e4ab0994bde9ba5dd87ade63869bee"/></dir><dir name="Html"><dir name="Head"><file name="Iparcel.php" hash="dd1737d041e9357269fa35b27dbef0bd"/><file name="Jquery.php" hash="3fd23960111c32d5696cc3de63e41b6e"/><file name="Post.php" hash="793d578cf82fb3ba83e1edc87b79ff95"/></dir></dir><dir name="Sales"><dir name="Order"><dir name="Totals"><file name="Abstract.php" hash="71cdfdce9a538b2f78b83b7b5eac8b19"/><file name="Duty.php" hash="2ca06e658c24b74d5e3dfa2a6950b010"/><file name="Tax.php" hash="7b630e60c6ff9340bedefdc84e99cef4"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Iparcel"><file name="LogController.php" hash="94e2095979140ad6d7c149080be30d38"/><file name="ShipmentController.php" hash="a9b8896d816b7612e1dc0638a2f8b740"/><dir name="Shipment"><file name="SplitController.php" hash="6a294947cf9399e42e90c890a6da2caa"/></dir><dir name="Sync"><file name="AjaxController.php" hash="8a7f2440ee161682eba59aeb7706f19a"/></dir></dir></dir><file name="AjaxController.php" hash="9069724f071742b25c83b2d0cc368871"/><file name="InfoController.php" hash="ab1bdf953dac27d87e9c5c8023ed9380"/><file name="InternationalController.php" hash="5250af3266389ddf0f5ea3a806652328"/></dir><dir name="etc"><file name="adminhtml.xml" hash="50bc0bee93b5612763321eae11cfdc51"/><file name="config.xml" hash="3fc0f987d470f83ccb10bd04de9d6abb"/><file name="system.xml" hash="823d3690c187d8c3db42912d83a6303b"/></dir><dir name="Helper"><file name="Api.php" hash="bae9a8435e047e229725e9b94b4b339d"/><file name="Data.php" hash="2e4f16bb0a3f1fe1345b5d21df59dbae"/><file name="International.php" hash="7bba0cd23188eaa3f99ed3d32ffccd14"/></dir><dir name="Model"><dir name="Api"><file name="Quote.php" hash="2e938bda13d007e73f8c2238aff76fa1"/></dir><dir name="Carrier"><file name="Abstract.php" hash="87ebc5b402ea74709a00abcf2a8aa856"/><file name="Iparcel.php" hash="12d9447bf8b1f3ac6e9bd7f7b26fbfcd"/></dir><dir name="Catalog"><dir name="Product"><file name="Observer.php" hash="2fd0ce66f180cb7d0dfbe752e5227636"/></dir></dir><dir name="Config"><dir name="Script"><file name="Js.php" hash="f29fc9a7535bc886b3ccf8b2e5b7ebfc"/></dir></dir><file name="Cron.php" hash="670d37cd6cdbe60aa69fad8eb0a0759e"/><file name="Log.php" hash="8c87e5f356f8ca77a186430dda106097"/><file name="Observer.php" hash="9d53f374789eaa0b13349843d3e2c7fd"/><dir name="Order"><dir name="Creditmemo"><dir name="Total"><file name="Duty.php" hash="33b91a5b8fa32293bfe0eab4460b04f9"/><file name="Tax.php" hash="7cd4046231eb8cb9031ae160720390da"/></dir></dir><dir name="Invoice"><dir name="Total"><file name="Duty.php" hash="5a4010994ea502afe88632ddd2699c63"/><file name="Tax.php" hash="c4c95aaaae9662860dd635238150aa46"/></dir></dir></dir><dir name="Payment"><file name="Iparcel.php" hash="d7881d795edbbd7279888e3a86fff2c8"/></dir><dir name="Quote"><dir name="Address"><dir name="Total"><file name="Abstract.php" hash="c5f5a251d5cf9f6ddb5a6d92efad157b"/><file name="Collector.php" hash="f805c3fc373f931d912b92cf38a15154"/><file name="Duty.php" hash="41adb9e60a5a22e1e552eb12aa83f858"/><file name="Tax.php" hash="262c99bceac487a5849058d6ed88011e"/></dir></dir></dir><dir name="Resource"><dir name="Api"><file name="Quote.php" hash="84d032b89c5df67ef24a112ad7846302"/></dir><dir name="Log"><file name="Collection.php" hash="7cb78be07207a599eff71c1e18ba0b7a"/></dir><file name="Log.php" hash="d14c2eb8314456a18adadbb52856e0b5"/><dir name="Mysql4"><file name="Setup.php" hash="9f9cf4b5934b70bd00b394beacb245f7"/></dir></dir><dir name="System"><dir name="Config"><dir name="Catalog"><file name="Mapping.php" hash="3d44f4b4ee157333556f588d7d8cd25b"/></dir><dir name="Data"><dir name="Date"><file name="Monthday.php" hash="baec5b8a27c5b037529ba935aae0370a"/><file name="Weekday.php" hash="173edc075325d932f8dad6d4674b8153"/></dir><dir name="Time"><file name="Hour.php" hash="ddad98b85290d9b13ec9f65fbe8a10b3"/><file name="Minute.php" hash="4a76af0057d60e8ff0ff7fedc1d50575"/></dir></dir><file name="Guid.php" hash="311c7f8072f02a6be9e25b6411298c5c"/><dir name="Script"><file name="Js.php" hash="3e3f23b38ecdc361bf6ff6cee1871e92"/></dir><dir name="Source"><dir name="Catalog"><dir name="Mapping"><dir name="Configurable"><file name="Price.php" hash="f9116fd446914467e7fb31bed5a6dd0b"/></dir><file name="Mode.php" hash="36140a050ea65ff23d45264fa67e1a2b"/></dir><dir name="Product"><dir name="Attribute"><file name="Boolean.php" hash="ca1883122659f1b48890ecd46a1590ee"/></dir><file name="Attribute.php" hash="8ca9c929cda497400865751ffba991e6"/></dir></dir><dir name="Date"><file name="Weekday.php" hash="143c26f9661e5dc995ff064e333a2018"/></dir><dir name="Sales"><dir name="Order"><file name="Status.php" hash="f1e414c08c43ebb2fcc6ccf5b41a2ff2"/></dir></dir><dir name="Tax"><file name="Mode.php" hash="fb09f17b54ef8ffa22580741cc66ac14"/></dir></dir></dir></dir><dir name="Tax"><dir name="Quote"><file name="Shipping.php" hash="e4b0f82aaef3666be520bc2da28af098"/><file name="Subtotal.php" hash="6824b6e6e86dc423fd493a31b15aa28d"/><file name="Tax.php" hash="7ee0528db7b7f9e89cd00a0b0c74dda9"/></dir></dir></dir><dir name="sql"><dir name="iparcel_setup"><file name="mysql4-upgrade-1.0.0-1.1.0.php" hash="4df6e3a3f2adf96eeb6ccdac213e3f1e"/><file name="mysql4-upgrade-1.1.0-1.1.1.php" hash="358045d3bf4a53a477e52b573289fe4c"/><file name="mysql4-upgrade-1.1.1-1.2.0.php" hash="1f04c5c71a6a79aaf74810e87670d998"/><file name="mysql4-upgrade-1.2.0-1.2.1.php" hash="de1c9caa713dd194595aa2dd15a829ac"/><file name="mysql4-upgrade-1.2.1-1.3.0.php" hash="f7a5567470b6a3c98530600b48993889"/></dir></dir></dir></dir></dir></dir><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="ipcarthandoff.xml" hash="0c1e5006d796fd7e39f08d836c1cb2ae"/><file name="iparcel.xml" hash="55aec816cb242fe44aab3a2e0d9de0ba"/><file name="iparcel.xml" hash="55aec816cb242fe44aab3a2e0d9de0ba"/></dir><dir name="template"><dir name="iparcel"><dir name="carthandoff"><file name="button.phtml" hash="4724ea247d4fb514373bd25290f8ee96"/><file name="estimate.phtml" hash="4613986760ea91bbfe607336008da870"/><dir name="form"><file name="button.phtml" hash="603683fdeb5153c8ce4649f72967180a"/></dir></dir><dir name="html"><dir name="head"><file name="iparcel.phtml" hash="07091c9914189cfef06af8cc6e41855c"/><file name="jquery.phtml" hash="c287cb0aa4ddd1f04f27cb5df605a27d"/><file name="post.phtml" hash="1a53e744668b250175ba275b4260050b"/><file name="iparcel.phtml" hash="07091c9914189cfef06af8cc6e41855c"/><file name="jquery.phtml" hash="c287cb0aa4ddd1f04f27cb5df605a27d"/><file name="post.phtml" hash="1a53e744668b250175ba275b4260050b"/></dir></dir><dir name="post"><file name="list.phtml" hash="20e5d7d7f82e1f8d951a1509921eb3bf"/><file name="list.phtml" hash="20e5d7d7f82e1f8d951a1509921eb3bf"/></dir><file name="post.phtml" hash="3827cab2dba981556aeb8ec915ab03cc"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="iparcel.xml" hash="f23a0739ab95168725913180ef44fff9"/></dir><dir name="template"><dir name="iparcel"><dir name="order"><dir name="totals"><file name="duty.phtml" hash="7af41c6d47dafeb890a520d8e6e39910"/><file name="tax.phtml" hash="25bffd2b58554cf28e5f4abe4b4e1e7c"/></dir></dir><dir name="sync"><dir name="ajax"><file name="catalog.phtml" hash="b95262967f28618b50f01962047816f2"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="locale"><dir name="en_US"><file name="iparcel.csv" hash="cbcb75a490376ca0b63c8c66622c1656"/></dir></dir></dir><dir name="js"><dir name="iparcel"><file name="cart-buttons.js" hash="98e45ffd14e94c6c33184fea62fce296"/><file name="jQuery.js" hash="8ec1680e4d815ff93f661214efa06276"/><file name="lib.js" hash="ea2e78b3fa40dd2be5e1f8559742ee86"/><file name="post.js" hash="55a14e510b988d893e95860e83e3f16b"/><file name="jQuery.js" hash="8ec1680e4d815ff93f661214efa06276"/><file name="lib.js" hash="ea2e78b3fa40dd2be5e1f8559742ee86"/><file name="post.js" hash="55a14e510b988d893e95860e83e3f16b"/><file name="jQuery.js" hash="8ec1680e4d815ff93f661214efa06276"/><file name="lib.js" hash="ea2e78b3fa40dd2be5e1f8559742ee86"/><file name="post.js" hash="55a14e510b988d893e95860e83e3f16b"/><dir name="adminhtml"><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/></dir></dir></dir><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="iparcel"><file name="ajaxSync.css" hash="8e9222a567c960ec381f43307fd8d882"/></dir></dir></dir></dir></dir></target></contents>
|
22 |
<compatible/>
|
23 |
<dependencies>
|
24 |
<required>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>iparcel_carthandoff</name>
|
4 |
+
<version>1.6.2</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>GPL</license>
|
7 |
<channel>community</channel>
|
16 |
<email>bburden@i-parcel.com</email>
|
17 |
</author>
|
18 |
</authors>
|
19 |
+
<date>2017-03-06</date>
|
20 |
+
<time>21:20:55</time>
|
21 |
+
<contents><target name="mageweb"><dir name="app"><dir name="etc"><dir name="modules"><file name="Iparcel_CartHandoff.xml" hash="ffb746b30fb5ff90dd7807211f6a4e9f"/><file name="Iparcel_All.xml" hash="89e4b47a6ac9aa0b82f70b1539d587ea"/></dir></dir><dir name="code"><dir name="community"><dir name="Iparcel"><dir name="CartHandoff"><dir name="Block"><dir name="Adminhtml"><dir name="Checkitems"><file name="Button.php" hash="996c59c0e070bfe0abcfbc75c33d9181"/></dir></dir><file name="Button.php" hash="f0973ed80adca37577c9183d543ffca6"/><file name="Estimate.php" hash="ed76666cb286b1bd36235c7aa23ab098"/><dir name="Form"><file name="Button.php" hash="15c90ba070756ebc2aec36546dd5854b"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Ipcarthandoff"><dir name="Checkitems"><file name="CacheController.php" hash="dc682b48cd1d76cbe5431340ad15d10b"/></dir></dir></dir><file name="HandoffController.php" hash="4d0483ff46dde310aa6dcee37828cb58"/><file name="StatusController.php" hash="511f645fec406059f956aa915c9138b4"/></dir><dir name="etc"><file name="adminhtml.xml" hash="e4f3a503dfa55aa0540b87d644cf0631"/><file name="config.xml" hash="4cc022bcd3cae9911b5ea0bf04ea02bd"/><file name="system.xml" hash="411e0489405c16fe92b3ceb061842b4a"/></dir><dir name="Helper"><file name="Api.php" hash="b972a49b0f27102835501fe4d0eafe40"/><file name="Data.php" hash="784eea529c5eae7652cd2741cc5b9214"/></dir><dir name="Model"><dir name="Catalog"><file name="Layer.php" hash="b7410cb6b76bcf6282d0de45fcfd4214"/><dir name="Product"><dir name="Type"><dir name="Configurable"><file name="Price.php" hash="9757c4a3a06ab09e20f505b83197a864"/></dir><file name="Price.php" hash="0b5b030df7a614b880a07642d9166888"/></dir></dir></dir><file name="Checkitems.php" hash="b86446862f8eb0b48cda130dc8e4b83a"/><file name="Observer.php" hash="ad5160b1bef1af322486cc6512893265"/><file name="Txid.php" hash="98c6c52175fd28afbbf8811c277b2583"/><dir name="Checkout"><dir name="Type"><file name="Onepage.php" hash="53d1efca3648682d95070061cba7beef"/></dir></dir><dir name="Observer"><file name="Storecredit.php" hash="f147548263151fa76944c1aeba53723f"/></dir><dir name="Payment"><file name="Free.php" hash="810c0e8e3a208a88bfbcb447997674ee"/><file name="Ipcarthandoff.php" hash="60c52fc039b371c01815dfca6bec4172"/></dir><dir name="Resource"><dir name="Checkitems"><file name="Collection.php" hash="9a488c5a6c0b3d16f63817afd691ae80"/></dir><file name="Checkitems.php" hash="03ba687675e6eef24e6fed32c4767e55"/><file name="Txid.php" hash="77f367b2e253756301d57eae8c6dda18"/><dir name="Mysql4"><file name="Setup.php" hash="c7609fb203ba82fa7e1a39457f1edb3b"/></dir><dir name="Txid"><file name="Collection.php" hash="969af7f2a20be73238c71d4ba650c63d"/></dir></dir><dir name="Sales"><file name="Order.php" hash="93008416ea3552d2adc0ed63016dc7b1"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Buttonplacement.php" hash="7f8a7cfd897ef5a12a082251eb397451"/><file name="Shippingaddress.php" hash="12630442dcf038ee8d7b7bf9b203b0eb"/><dir name="Checkitems"><file name="Cache.php" hash="ea4566851a70fee0473a283a7bfa0a2c"/></dir></dir></dir></dir></dir><dir name="sql"><dir name="ipcarthandoff_setup"><file name="mysql4-upgrade-1.2.0-1.3.0.php" hash="178b64c5cd9aded939a8973d4c0ac3e6"/><file name="mysql4-upgrade-1.6.1-1.6.2.php" hash="53e1ba58f5c4ca7a805a7337159b5daa"/></dir></dir></dir><dir name="All"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Mapping"><file name="Button.php" hash="dfdaf5a2fbf824a10fccc952fdccf567"/></dir></dir><dir name="Iparcel"><file name="Dashboard.php" hash="ec9dddd10368136f1bdfe79fddd4500c"/><file name="Logs.php" hash="5823bbc2a78666972dd02d5fd3e9d05d"/><file name="Sync.php" hash="ce239afe604653d4b15c739df965fa06"/><dir name="Logs"><file name="Grid.php" hash="9c472c78640c8aecb5de4b638372e6f5"/></dir><dir name="Shipment"><dir name="Split"><file name="Form.php" hash="db44693b1eda47cb1d87b8a69ac9a5a0"/></dir><file name="Split.php" hash="4cb66f91987f842c699bd2d6c42f2249"/></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Method.php" hash="935a3d4adad09d6c049cd6bb4cefb8db"/></dir></dir></dir></dir></dir><dir name="Catalog"><dir name="Product"><file name="List.php" hash="5de6102a56f4a9301f1b81004da39ef8"/></dir><file name="Product.php" hash="71a865c01574fd10ee0ffa7475cee378"/></dir><dir name="Catalogsearch"><dir name="Advanced"><file name="Result.php" hash="ad5a157444b80a284e0f9e7a91187b55"/></dir><file name="Result.php" hash="33e4ab0994bde9ba5dd87ade63869bee"/></dir><dir name="Html"><dir name="Head"><file name="Iparcel.php" hash="dd1737d041e9357269fa35b27dbef0bd"/><file name="Jquery.php" hash="3fd23960111c32d5696cc3de63e41b6e"/><file name="Post.php" hash="793d578cf82fb3ba83e1edc87b79ff95"/></dir></dir><dir name="Sales"><dir name="Order"><dir name="Totals"><file name="Abstract.php" hash="71cdfdce9a538b2f78b83b7b5eac8b19"/><file name="Duty.php" hash="2ca06e658c24b74d5e3dfa2a6950b010"/><file name="Tax.php" hash="7b630e60c6ff9340bedefdc84e99cef4"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Iparcel"><file name="LogController.php" hash="94e2095979140ad6d7c149080be30d38"/><file name="ShipmentController.php" hash="a9b8896d816b7612e1dc0638a2f8b740"/><dir name="Shipment"><file name="SplitController.php" hash="6a294947cf9399e42e90c890a6da2caa"/></dir><dir name="Sync"><file name="AjaxController.php" hash="8a7f2440ee161682eba59aeb7706f19a"/></dir></dir></dir><file name="AjaxController.php" hash="9069724f071742b25c83b2d0cc368871"/><file name="InfoController.php" hash="ab1bdf953dac27d87e9c5c8023ed9380"/><file name="InternationalController.php" hash="5250af3266389ddf0f5ea3a806652328"/></dir><dir name="etc"><file name="adminhtml.xml" hash="50bc0bee93b5612763321eae11cfdc51"/><file name="config.xml" hash="3fc0f987d470f83ccb10bd04de9d6abb"/><file name="system.xml" hash="823d3690c187d8c3db42912d83a6303b"/></dir><dir name="Helper"><file name="Api.php" hash="bae9a8435e047e229725e9b94b4b339d"/><file name="Data.php" hash="2e4f16bb0a3f1fe1345b5d21df59dbae"/><file name="International.php" hash="7bba0cd23188eaa3f99ed3d32ffccd14"/></dir><dir name="Model"><dir name="Api"><file name="Quote.php" hash="2e938bda13d007e73f8c2238aff76fa1"/></dir><dir name="Carrier"><file name="Abstract.php" hash="87ebc5b402ea74709a00abcf2a8aa856"/><file name="Iparcel.php" hash="12d9447bf8b1f3ac6e9bd7f7b26fbfcd"/></dir><dir name="Catalog"><dir name="Product"><file name="Observer.php" hash="2fd0ce66f180cb7d0dfbe752e5227636"/></dir></dir><dir name="Config"><dir name="Script"><file name="Js.php" hash="f29fc9a7535bc886b3ccf8b2e5b7ebfc"/></dir></dir><file name="Cron.php" hash="670d37cd6cdbe60aa69fad8eb0a0759e"/><file name="Log.php" hash="8c87e5f356f8ca77a186430dda106097"/><file name="Observer.php" hash="9d53f374789eaa0b13349843d3e2c7fd"/><dir name="Order"><dir name="Creditmemo"><dir name="Total"><file name="Duty.php" hash="33b91a5b8fa32293bfe0eab4460b04f9"/><file name="Tax.php" hash="7cd4046231eb8cb9031ae160720390da"/></dir></dir><dir name="Invoice"><dir name="Total"><file name="Duty.php" hash="5a4010994ea502afe88632ddd2699c63"/><file name="Tax.php" hash="c4c95aaaae9662860dd635238150aa46"/></dir></dir></dir><dir name="Payment"><file name="Iparcel.php" hash="d7881d795edbbd7279888e3a86fff2c8"/></dir><dir name="Quote"><dir name="Address"><dir name="Total"><file name="Abstract.php" hash="c5f5a251d5cf9f6ddb5a6d92efad157b"/><file name="Collector.php" hash="f805c3fc373f931d912b92cf38a15154"/><file name="Duty.php" hash="41adb9e60a5a22e1e552eb12aa83f858"/><file name="Tax.php" hash="262c99bceac487a5849058d6ed88011e"/></dir></dir></dir><dir name="Resource"><dir name="Api"><file name="Quote.php" hash="84d032b89c5df67ef24a112ad7846302"/></dir><dir name="Log"><file name="Collection.php" hash="7cb78be07207a599eff71c1e18ba0b7a"/></dir><file name="Log.php" hash="d14c2eb8314456a18adadbb52856e0b5"/><dir name="Mysql4"><file name="Setup.php" hash="9f9cf4b5934b70bd00b394beacb245f7"/></dir></dir><dir name="System"><dir name="Config"><dir name="Catalog"><file name="Mapping.php" hash="3d44f4b4ee157333556f588d7d8cd25b"/></dir><dir name="Data"><dir name="Date"><file name="Monthday.php" hash="baec5b8a27c5b037529ba935aae0370a"/><file name="Weekday.php" hash="173edc075325d932f8dad6d4674b8153"/></dir><dir name="Time"><file name="Hour.php" hash="ddad98b85290d9b13ec9f65fbe8a10b3"/><file name="Minute.php" hash="4a76af0057d60e8ff0ff7fedc1d50575"/></dir></dir><file name="Guid.php" hash="311c7f8072f02a6be9e25b6411298c5c"/><dir name="Script"><file name="Js.php" hash="3e3f23b38ecdc361bf6ff6cee1871e92"/></dir><dir name="Source"><dir name="Catalog"><dir name="Mapping"><dir name="Configurable"><file name="Price.php" hash="f9116fd446914467e7fb31bed5a6dd0b"/></dir><file name="Mode.php" hash="36140a050ea65ff23d45264fa67e1a2b"/></dir><dir name="Product"><dir name="Attribute"><file name="Boolean.php" hash="ca1883122659f1b48890ecd46a1590ee"/></dir><file name="Attribute.php" hash="8ca9c929cda497400865751ffba991e6"/></dir></dir><dir name="Date"><file name="Weekday.php" hash="143c26f9661e5dc995ff064e333a2018"/></dir><dir name="Sales"><dir name="Order"><file name="Status.php" hash="f1e414c08c43ebb2fcc6ccf5b41a2ff2"/></dir></dir><dir name="Tax"><file name="Mode.php" hash="fb09f17b54ef8ffa22580741cc66ac14"/></dir></dir></dir></dir><dir name="Tax"><dir name="Quote"><file name="Shipping.php" hash="e4b0f82aaef3666be520bc2da28af098"/><file name="Subtotal.php" hash="6824b6e6e86dc423fd493a31b15aa28d"/><file name="Tax.php" hash="7ee0528db7b7f9e89cd00a0b0c74dda9"/></dir></dir></dir><dir name="sql"><dir name="iparcel_setup"><file name="mysql4-upgrade-1.0.0-1.1.0.php" hash="4df6e3a3f2adf96eeb6ccdac213e3f1e"/><file name="mysql4-upgrade-1.1.0-1.1.1.php" hash="358045d3bf4a53a477e52b573289fe4c"/><file name="mysql4-upgrade-1.1.1-1.2.0.php" hash="1f04c5c71a6a79aaf74810e87670d998"/><file name="mysql4-upgrade-1.2.0-1.2.1.php" hash="de1c9caa713dd194595aa2dd15a829ac"/><file name="mysql4-upgrade-1.2.1-1.3.0.php" hash="f7a5567470b6a3c98530600b48993889"/></dir></dir></dir></dir></dir></dir><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="ipcarthandoff.xml" hash="0c1e5006d796fd7e39f08d836c1cb2ae"/><file name="iparcel.xml" hash="55aec816cb242fe44aab3a2e0d9de0ba"/><file name="iparcel.xml" hash="55aec816cb242fe44aab3a2e0d9de0ba"/></dir><dir name="template"><dir name="iparcel"><dir name="carthandoff"><file name="button.phtml" hash="4724ea247d4fb514373bd25290f8ee96"/><file name="estimate.phtml" hash="4613986760ea91bbfe607336008da870"/><dir name="form"><file name="button.phtml" hash="603683fdeb5153c8ce4649f72967180a"/></dir></dir><dir name="html"><dir name="head"><file name="iparcel.phtml" hash="07091c9914189cfef06af8cc6e41855c"/><file name="jquery.phtml" hash="c287cb0aa4ddd1f04f27cb5df605a27d"/><file name="post.phtml" hash="1a53e744668b250175ba275b4260050b"/><file name="iparcel.phtml" hash="07091c9914189cfef06af8cc6e41855c"/><file name="jquery.phtml" hash="c287cb0aa4ddd1f04f27cb5df605a27d"/><file name="post.phtml" hash="1a53e744668b250175ba275b4260050b"/></dir></dir><dir name="post"><file name="list.phtml" hash="20e5d7d7f82e1f8d951a1509921eb3bf"/><file name="list.phtml" hash="20e5d7d7f82e1f8d951a1509921eb3bf"/></dir><file name="post.phtml" hash="3827cab2dba981556aeb8ec915ab03cc"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="iparcel.xml" hash="f23a0739ab95168725913180ef44fff9"/></dir><dir name="template"><dir name="iparcel"><dir name="order"><dir name="totals"><file name="duty.phtml" hash="7af41c6d47dafeb890a520d8e6e39910"/><file name="tax.phtml" hash="25bffd2b58554cf28e5f4abe4b4e1e7c"/></dir></dir><dir name="sync"><dir name="ajax"><file name="catalog.phtml" hash="b95262967f28618b50f01962047816f2"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="locale"><dir name="en_US"><file name="iparcel.csv" hash="cbcb75a490376ca0b63c8c66622c1656"/></dir></dir></dir><dir name="js"><dir name="iparcel"><file name="cart-buttons.js" hash="98e45ffd14e94c6c33184fea62fce296"/><file name="jQuery.js" hash="8ec1680e4d815ff93f661214efa06276"/><file name="lib.js" hash="ea2e78b3fa40dd2be5e1f8559742ee86"/><file name="post.js" hash="55a14e510b988d893e95860e83e3f16b"/><file name="jQuery.js" hash="8ec1680e4d815ff93f661214efa06276"/><file name="lib.js" hash="ea2e78b3fa40dd2be5e1f8559742ee86"/><file name="post.js" hash="55a14e510b988d893e95860e83e3f16b"/><file name="jQuery.js" hash="8ec1680e4d815ff93f661214efa06276"/><file name="lib.js" hash="ea2e78b3fa40dd2be5e1f8559742ee86"/><file name="post.js" hash="55a14e510b988d893e95860e83e3f16b"/><dir name="adminhtml"><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/><file name="shipping-methods.js" hash="eca91e8a5cf152fce7af0eb5bf2991bb"/><file name="sync.js" hash="ec17cf8528736f8aab3dd0ac76e3e7d9"/></dir></dir></dir><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="iparcel"><file name="ajaxSync.css" hash="8e9222a567c960ec381f43307fd8d882"/></dir></dir></dir></dir></dir></target></contents>
|
22 |
<compatible/>
|
23 |
<dependencies>
|
24 |
<required>
|