OnePica_AvaTax - Version 2.6.1

Version Notes

Added global feature support
Fixed issue with multiple requests to Avalara
Fixed tax class for gifting options
Fixed tax calculation for gift options
Fixed timezone issues when send invoice/creditmemo to Avalara
Fixed company value code send when create order in admin for non-default store
Fixed vat id value for checkout with multiple addresses
Fixed currency conversion for non default store

Download this release

Release Info

Developer Astound Commerce
Extension OnePica_AvaTax
Version 2.6.1
Comparing to
See all releases


Code changes from version 2.6.0 to 2.6.1

app/code/community/OnePica/AvaTax/Helper/Data.php CHANGED
@@ -619,4 +619,18 @@ class OnePica_AvaTax_Helper_Data extends Mage_Core_Helper_Abstract
619
 
620
  return true;
621
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
622
  }
619
 
620
  return true;
621
  }
622
+
623
+ /**
624
+ * Round up
625
+ *
626
+ * @param float $value
627
+ * @param int $precision
628
+ * @return float
629
+ */
630
+ public function roundUp($value, $precision)
631
+ {
632
+ $fact = pow(10, $precision);
633
+
634
+ return ceil($fact * $value) / $fact;
635
+ }
636
  }
app/code/community/OnePica/AvaTax/Model/Avatax/Abstract.php CHANGED
@@ -89,7 +89,18 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
89
  $storeId = $object->getStoreId();
90
  }
91
 
92
- return $this->_getGiftWrappingDataHelper()->getWrappingTaxClass($storeId);
 
 
 
 
 
 
 
 
 
 
 
93
  }
94
 
95
  /**
@@ -144,12 +155,12 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
144
  /**
145
  * Adds additional transaction based data
146
  *
147
- * @param Mage_Sales_Model_Quote|Mage_Sales_Model_Order $object
148
  * @return $this
149
  */
150
  protected function _addGeneralInfo($object)
151
  {
152
- $storeId = $object->getStoreId();
153
  $this->_setCompanyCode($storeId);
154
  $this->_request->setBusinessIdentificationNo($this->_getVatId($object));
155
  $this->_request->setDetailLevel(DetailLevel::$Document);
@@ -177,7 +188,8 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
177
  {
178
  if ($object instanceof Mage_Sales_Model_Order) {
179
  return $this->_getVatIdByOrder($object);
180
- }
 
181
  return $this->_getVatIdByQuoteAddress($object);
182
  }
183
 
@@ -189,8 +201,9 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
189
  */
190
  protected function _getVatIdByQuoteAddress($address)
191
  {
192
- return $address->getQuote()->getShippingAddress()->getVatId()
193
  ?: $address->getQuote()->getBillingAddress()->getVatId();
 
194
  }
195
 
196
  /**
@@ -334,8 +347,8 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
334
  /**
335
  * Adds a comment to order history. Method choosen based on Magento version.
336
  *
337
- * @param Mage_Sales_Model_Order
338
- * @param string
339
  * @return self
340
  */
341
  protected function _addStatusHistoryComment($order, $comment)
@@ -383,7 +396,7 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
383
  $taxClassIds[] = $product->getTaxClassId();
384
  }
385
  }
386
- $gwTaxClassId = (int)$this->_getGwTaxClassId($object);
387
 
388
  if (0 !== $gwTaxClassId) {
389
  $taxClassIds[] = $gwTaxClassId;
@@ -425,20 +438,28 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
425
  }
426
 
427
  /**
428
- * Get Avatax class for given product
429
  *
430
  * @param Mage_Catalog_Model_Product $product
431
  * @return string
432
  */
433
- protected function _getTaxClassByProduct($product)
434
  {
435
- $taxClass = '';
436
- if ($product->getTaxClassId()) {
437
- $taxClass = $this->_getTaxClassCollection()
438
- ->getItemById($product->getTaxClassId())
439
- ->getOpAvataxCode();
440
- }
441
- return $taxClass;
 
 
 
 
 
 
 
 
442
  }
443
 
444
  /**
@@ -493,23 +514,6 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
493
  return $taxOverride;
494
  }
495
 
496
- /**
497
- * Get gift tax class
498
- *
499
- * @return string
500
- */
501
- protected function _getGiftTaxClass()
502
- {
503
- $taxClass = '';
504
- if ($this->_gwTaxClassId) {
505
- $taxClass = $this->_getTaxClassCollection()
506
- ->getItemById($this->_gwTaxClassId)
507
- ->getOpAvataxCode();
508
- }
509
-
510
- return $taxClass;
511
- }
512
-
513
  /**
514
  * Get gift wrapping data helper
515
  *
@@ -529,4 +533,19 @@ abstract class OnePica_AvaTax_Model_Avatax_Abstract extends OnePica_AvaTax_Model
529
  {
530
  return Mage::getSingleton('core/date');
531
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  }
89
  $storeId = $object->getStoreId();
90
  }
91
 
92
+ return $this->_getWrappingTaxClass($storeId);
93
+ }
94
+
95
+ /**
96
+ * Get gift wrapping tax class config value
97
+ *
98
+ * @param int $storeId
99
+ * @return int
100
+ */
101
+ protected function _getWrappingTaxClass($storeId)
102
+ {
103
+ return (int)$this->_getGiftWrappingDataHelper()->getWrappingTaxClass($storeId);
104
  }
105
 
106
  /**
155
  /**
156
  * Adds additional transaction based data
157
  *
158
+ * @param OnePica_AvaTax_Model_Sales_Quote_Address|Mage_Sales_Model_Order $object
159
  * @return $this
160
  */
161
  protected function _addGeneralInfo($object)
162
  {
163
+ $storeId = $this->_getStoreIdByObject($object);
164
  $this->_setCompanyCode($storeId);
165
  $this->_request->setBusinessIdentificationNo($this->_getVatId($object));
166
  $this->_request->setDetailLevel(DetailLevel::$Document);
188
  {
189
  if ($object instanceof Mage_Sales_Model_Order) {
190
  return $this->_getVatIdByOrder($object);
191
+ }
192
+
193
  return $this->_getVatIdByQuoteAddress($object);
194
  }
195
 
201
  */
202
  protected function _getVatIdByQuoteAddress($address)
203
  {
204
+ $vatId = $address->getVatId()
205
  ?: $address->getQuote()->getBillingAddress()->getVatId();
206
+ return (string)$vatId;
207
  }
208
 
209
  /**
347
  /**
348
  * Adds a comment to order history. Method choosen based on Magento version.
349
  *
350
+ * @param Mage_Sales_Model_Order $order
351
+ * @param string $comment
352
  * @return self
353
  */
354
  protected function _addStatusHistoryComment($order, $comment)
396
  $taxClassIds[] = $product->getTaxClassId();
397
  }
398
  }
399
+ $gwTaxClassId = $this->_getGwTaxClassId($object);
400
 
401
  if (0 !== $gwTaxClassId) {
402
  $taxClassIds[] = $gwTaxClassId;
438
  }
439
 
440
  /**
441
+ * Get Avatax tax code for given product
442
  *
443
  * @param Mage_Catalog_Model_Product $product
444
  * @return string
445
  */
446
+ protected function _getTaxClassCodeByProduct($product)
447
  {
448
+ $taxClass = $this->_getTaxClassCollection()->getItemById($product->getTaxClassId());
449
+ return $taxClass ? $taxClass->getOpAvataxCode() : '';
450
+ }
451
+
452
+ /**
453
+ * Get gift Avatax tax class code
454
+ *
455
+ * @param int $storeId
456
+ * @return string
457
+ */
458
+ protected function _getGiftTaxClassCode($storeId)
459
+ {
460
+ $taxClassId = $this->_getWrappingTaxClass($storeId);
461
+ $taxClass = $this->_getTaxClassCollection()->getItemById($taxClassId);
462
+ return $taxClass ? $taxClass->getOpAvataxCode() : '';
463
  }
464
 
465
  /**
514
  return $taxOverride;
515
  }
516
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
517
  /**
518
  * Get gift wrapping data helper
519
  *
533
  {
534
  return Mage::getSingleton('core/date');
535
  }
536
+
537
+ /**
538
+ * Retrieve storeId from object
539
+ *
540
+ * @param OnePica_AvaTax_Model_Sales_Quote_Address|Mage_Sales_Model_Order $object
541
+ * @return int
542
+ */
543
+ protected function _getStoreIdByObject($object)
544
+ {
545
+ if ($object instanceof OnePica_AvaTax_Model_Sales_Quote_Address) {
546
+ return $object->getQuote()->getStoreId();
547
+ }
548
+
549
+ return $object->getStoreId();
550
+ }
551
  }
app/code/community/OnePica/AvaTax/Model/Avatax/Estimate.php CHANGED
@@ -92,7 +92,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
92
  /**
93
  * Estimates tax rate for one item.
94
  *
95
- * @param Varien_Object $item
96
  * @return int
97
  */
98
  public function getItemRate($item)
@@ -101,7 +101,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
101
  return 0;
102
  } else {
103
  $key = $this->_getRates($item);
104
- $id = $item->getId();
105
  return isset($this->_rates[$key]['items'][$id]['rate']) ? $this->_rates[$key]['items'][$id]['rate'] : 0;
106
  }
107
  }
@@ -114,16 +114,19 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
114
  */
115
  public function getItemGiftTax($item)
116
  {
 
 
 
117
  $key = $this->_getRates($item);
118
- $id = $item->getId();
119
- return isset($this->_rates[$key]['items'][$id]['gift_tax']) ? $this->_rates[$key]['items'][$id]['gift_tax'] : 0;
120
  }
121
 
122
  /**
123
  * Estimates tax amount for one item. Does not trigger a call if the shipping
124
  * address has no postal code, or if the postal code is set to "-" (OneStepCheckout)
125
  *
126
- * @param Varien_Object $item
127
  * @return int
128
  */
129
  public function getItemTax($item)
@@ -138,7 +141,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
138
  return $tax;
139
  } else {
140
  $key = $this->_getRates($item);
141
- $id = $item->getId();
142
  return isset($this->_rates[$key]['items'][$id]['amt']) ? $this->_rates[$key]['items'][$id]['amt'] : 0;
143
  }
144
  }
@@ -176,7 +179,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
176
  /**
177
  * Get rates from Avalara
178
  *
179
- * @param Varien_Object $item
180
  * @return string
181
  */
182
  protected function _getRates($item)
@@ -185,15 +188,17 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
185
  return 'error';
186
  }
187
 
 
188
  $address = $item->getAddress();
189
  $this->_lines = array();
190
 
191
  //set up request
 
192
  $this->_request = new GetTaxRequest();
193
  $this->_request->setDocType(DocumentType::$SalesOrder);
194
  $this->_request->setDocCode('quote-' . $address->getId());
195
  $this->_addGeneralInfo($address);
196
- $this->_setOriginAddress($address->getStoreId());
197
  $this->_setDestinationAddress($address);
198
  $this->_request->setDetailLevel(DetailLevel::$Line);
199
  $this->_addItemsInCart($item);
@@ -203,7 +208,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
203
  $this->_addGwPrintedCardAmount($address);
204
  //check to see if we can/need to make the request to Avalara
205
  $requestKey = $this->_genRequestKey();
206
- $makeRequest = !isset($this->_rates[$requestKey]['items'][$item->getId()]);
207
  //@startSkipCommitHooks
208
  $makeRequest &= count($this->_lineToLineId) ? true : false;
209
  $makeRequest &= $this->_request->getDestinationAddress() == '' ? false : true;
@@ -213,25 +218,25 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
213
 
214
  //make request if needed and save results in cache
215
  if ($makeRequest) {
216
- $result = $this->_send($address->getQuote()->getStoreId());
 
 
 
 
 
 
 
217
 
218
  //success
219
  /** @var GetTaxResult $result */
220
  if ($result->getResultCode() == SeverityLevel::$Success) {
221
- $this->_rates[$requestKey] = array(
222
- 'timestamp' => $this->_getDateModel()->timestamp(),
223
- 'address_id' => $address->getId(),
224
- 'summary' => array(),
225
- 'items' => array()
226
- );
227
-
228
  foreach ($result->getTaxLines() as $ctl) {
229
- $giftLineTax = $this->_getGiftTax($ctl, $result);
230
- $id = $this->_lineToLineId[$ctl->getNo()];
231
- $this->_rates[$requestKey]['items'][$id] = array(
232
- 'rate' => ($ctl->getTax() ? $ctl->getRate() : 0) * 100,
233
- 'amt' => $ctl->getTax(),
234
- 'gift_tax' => $giftLineTax
235
  );
236
  }
237
 
@@ -244,13 +249,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
244
  }
245
  //failure
246
  } else {
247
- $this->_rates[$requestKey] = array(
248
- 'timestamp' => $this->_getDateModel()->timestamp(),
249
- 'address_id' => $address->getId(),
250
- 'summary' => array(),
251
- 'items' => array(),
252
- 'failure' => true
253
- );
254
  if (Mage::helper('avatax')->fullStopOnError($address->getStoreId())) {
255
  $address->getQuote()->setHasError(true);
256
  }
@@ -325,7 +324,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
325
  $gwOrderSku = Mage::helper('avatax')->getGwOrderSku($storeId);
326
  $line->setItemCode($gwOrderSku ? $gwOrderSku : 'GwOrderAmount');
327
  $line->setDescription('Gift Wrap Order Amount');
328
- $line->setTaxCode($this->_getGiftTaxClass());
329
  $line->setQty(1);
330
  $line->setAmount($gwOrderAmount);
331
  $line->setDiscounted(false);
@@ -344,27 +343,28 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
344
  */
345
  protected function _addGwItemsAmount($item)
346
  {
347
- if (!$item->getGwPrice()) {
348
  return false;
349
  }
350
  $lineNumber = count($this->_lines);
351
  $storeId = $item->getQuote()->getStoreId();
352
  //Add gift wrapping price(for individual items)
353
- $gwItemsAmount = $item->getGwBasePrice();
354
 
355
  $line = new Line();
356
  $line->setNo($lineNumber);
357
  $gwItemsSku = Mage::helper('avatax')->getGwItemsSku($storeId);
358
  $line->setItemCode($gwItemsSku ? $gwItemsSku : 'GwItemsAmount');
359
  $line->setDescription('Gift Wrap Items Amount');
360
- $line->setTaxCode($this->_getGiftTaxClass());
361
- $line->setQty(1);
362
  $line->setAmount($gwItemsAmount);
363
  $line->setDiscounted(false);
364
 
365
  $this->_lines[$lineNumber] = $line;
366
  $this->_request->setLines($this->_lines);
367
  $this->_lineToLineId[$lineNumber] = Mage::helper('avatax')->getGwItemsSku($storeId);
 
368
 
369
  return $lineNumber;
370
  }
@@ -390,7 +390,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
390
  $gwPrintedCardSku = Mage::helper('avatax')->getGwPrintedCardSku($storeId);
391
  $line->setItemCode($gwPrintedCardSku ? $gwPrintedCardSku : 'GwPrintedCardAmount');
392
  $line->setDescription('Gift Wrap Printed Card Amount');
393
- $line->setTaxCode($this->_getGiftTaxClass());
394
  $line->setQty(1);
395
  $line->setAmount($gwPrintedCardAmount);
396
  $line->setDiscounted(false);
@@ -404,7 +404,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
404
  /**
405
  * Adds all items in the cart to the request
406
  *
407
- * @param Mage_Sales_Model_Quote_item|Mage_Sales_Model_Quote_Address_item $item
408
  * @return int
409
  */
410
  protected function _addItemsInCart($item)
@@ -421,10 +421,8 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
421
  $this->_initProductCollection($items);
422
  $this->_initTaxClassCollection($item->getAddress());
423
  foreach ($items as $item) {
424
- $productLineNumber = $this->_newLine($item);
425
- if (is_int($productLineNumber)) {
426
- $this->_productGiftPair[$productLineNumber] = $this->_addGwItemsAmount($item);
427
- }
428
  }
429
  $this->_request->setLines($this->_lines);
430
  }
@@ -440,11 +438,12 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
440
  */
441
  protected function _newLine($item)
442
  {
 
443
  if ($this->isProductCalculated($item)) {
444
  return false;
445
  }
446
  $product = $this->_getProductByProductId($item->getProductId());
447
- $taxClass = $this->_getTaxClassByProduct($product);
448
  $price = $item->getBaseRowTotal() - $item->getBaseDiscountAmount();
449
  $lineNumber = count($this->_lines);
450
  $line = new Line();
@@ -454,6 +453,7 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
454
  $line->setQty($item->getQty());
455
  $line->setAmount($price);
456
  $line->setDiscounted($item->getDiscountAmount() ? true : false);
 
457
  if ($taxClass) {
458
  $line->setTaxCode($taxClass);
459
  }
@@ -467,25 +467,31 @@ class OnePica_AvaTax_Model_Avatax_Estimate extends OnePica_AvaTax_Model_Avatax_A
467
  }
468
 
469
  $this->_lines[$lineNumber] = $line;
470
- $this->_lineToLineId[$lineNumber] = $item->getId();
471
  return $lineNumber;
472
  }
473
 
474
  /**
475
- * Retrieve gift tax from line
476
  *
477
- * @param Line $ctl
478
- * @param GetTaxResult $result
479
- * @return null|float
480
  */
481
- protected function _getGiftTax($ctl, $result)
482
  {
483
- $giftLineTax = null;
484
- if (isset($this->_productGiftPair[$ctl->getNo()]) && is_int($this->_productGiftPair[$ctl->getNo()])) {
485
- $giftNo = $this->_productGiftPair[$ctl->getNo()];
486
- $giftLineTax = $result->getTaxLine($giftNo)->getTax();
487
- }
488
 
489
- return $giftLineTax;
 
 
 
 
 
 
 
 
490
  }
491
  }
92
  /**
93
  * Estimates tax rate for one item.
94
  *
95
+ * @param Mage_Sales_Model_Quote_Item $item
96
  * @return int
97
  */
98
  public function getItemRate($item)
101
  return 0;
102
  } else {
103
  $key = $this->_getRates($item);
104
+ $id = $item->getSku();
105
  return isset($this->_rates[$key]['items'][$id]['rate']) ? $this->_rates[$key]['items'][$id]['rate'] : 0;
106
  }
107
  }
114
  */
115
  public function getItemGiftTax($item)
116
  {
117
+ if ($item->getParentItemId()) {
118
+ return 0;
119
+ }
120
  $key = $this->_getRates($item);
121
+ $id = $item->getSku();
122
+ return isset($this->_rates[$key]['gw_items'][$id]['amt']) ? $this->_rates[$key]['gw_items'][$id]['amt'] : 0;
123
  }
124
 
125
  /**
126
  * Estimates tax amount for one item. Does not trigger a call if the shipping
127
  * address has no postal code, or if the postal code is set to "-" (OneStepCheckout)
128
  *
129
+ * @param Mage_Sales_Model_Quote_Item $item
130
  * @return int
131
  */
132
  public function getItemTax($item)
141
  return $tax;
142
  } else {
143
  $key = $this->_getRates($item);
144
+ $id = $item->getSku();
145
  return isset($this->_rates[$key]['items'][$id]['amt']) ? $this->_rates[$key]['items'][$id]['amt'] : 0;
146
  }
147
  }
179
  /**
180
  * Get rates from Avalara
181
  *
182
+ * @param Mage_Sales_Model_Quote_Item $item
183
  * @return string
184
  */
185
  protected function _getRates($item)
188
  return 'error';
189
  }
190
 
191
+ /** @var OnePica_AvaTax_Model_Sales_Quote_Address $address */
192
  $address = $item->getAddress();
193
  $this->_lines = array();
194
 
195
  //set up request
196
+ $quote = $address->getQuote();
197
  $this->_request = new GetTaxRequest();
198
  $this->_request->setDocType(DocumentType::$SalesOrder);
199
  $this->_request->setDocCode('quote-' . $address->getId());
200
  $this->_addGeneralInfo($address);
201
+ $this->_setOriginAddress($quote->getStoreId());
202
  $this->_setDestinationAddress($address);
203
  $this->_request->setDetailLevel(DetailLevel::$Line);
204
  $this->_addItemsInCart($item);
208
  $this->_addGwPrintedCardAmount($address);
209
  //check to see if we can/need to make the request to Avalara
210
  $requestKey = $this->_genRequestKey();
211
+ $makeRequest = empty($this->_rates[$requestKey]['items']);
212
  //@startSkipCommitHooks
213
  $makeRequest &= count($this->_lineToLineId) ? true : false;
214
  $makeRequest &= $this->_request->getDestinationAddress() == '' ? false : true;
218
 
219
  //make request if needed and save results in cache
220
  if ($makeRequest) {
221
+ $result = $this->_send($quote->getStoreId());
222
+ $this->_rates[$requestKey] = array(
223
+ 'timestamp' => $this->_getDateModel()->timestamp(),
224
+ 'address_id' => $address->getId(),
225
+ 'summary' => array(),
226
+ 'items' => array(),
227
+ 'gw_items' => array()
228
+ );
229
 
230
  //success
231
  /** @var GetTaxResult $result */
232
  if ($result->getResultCode() == SeverityLevel::$Success) {
 
 
 
 
 
 
 
233
  foreach ($result->getTaxLines() as $ctl) {
234
+ /** @var TaxLine $ctl */
235
+ $id = $this->_getItemIdByLine($ctl);
236
+ $code = $this->_getTaxArrayCodeByLine($ctl);
237
+ $this->_rates[$requestKey][$code][$id] = array(
238
+ 'rate' => ($ctl->getTax() ? $ctl->getRate() : 0) * 100,
239
+ 'amt' => $ctl->getTax(),
240
  );
241
  }
242
 
249
  }
250
  //failure
251
  } else {
252
+ $this->_rates[$requestKey]['failure'] = true;
 
 
 
 
 
 
253
  if (Mage::helper('avatax')->fullStopOnError($address->getStoreId())) {
254
  $address->getQuote()->setHasError(true);
255
  }
324
  $gwOrderSku = Mage::helper('avatax')->getGwOrderSku($storeId);
325
  $line->setItemCode($gwOrderSku ? $gwOrderSku : 'GwOrderAmount');
326
  $line->setDescription('Gift Wrap Order Amount');
327
+ $line->setTaxCode($this->_getGiftTaxClassCode($storeId));
328
  $line->setQty(1);
329
  $line->setAmount($gwOrderAmount);
330
  $line->setDiscounted(false);
343
  */
344
  protected function _addGwItemsAmount($item)
345
  {
346
+ if (!$item->getGwId()) {
347
  return false;
348
  }
349
  $lineNumber = count($this->_lines);
350
  $storeId = $item->getQuote()->getStoreId();
351
  //Add gift wrapping price(for individual items)
352
+ $gwItemsAmount = $item->getGwBasePrice() * $item->getQty();
353
 
354
  $line = new Line();
355
  $line->setNo($lineNumber);
356
  $gwItemsSku = Mage::helper('avatax')->getGwItemsSku($storeId);
357
  $line->setItemCode($gwItemsSku ? $gwItemsSku : 'GwItemsAmount');
358
  $line->setDescription('Gift Wrap Items Amount');
359
+ $line->setTaxCode($this->_getGiftTaxClassCode($storeId));
360
+ $line->setQty($item->getQty());
361
  $line->setAmount($gwItemsAmount);
362
  $line->setDiscounted(false);
363
 
364
  $this->_lines[$lineNumber] = $line;
365
  $this->_request->setLines($this->_lines);
366
  $this->_lineToLineId[$lineNumber] = Mage::helper('avatax')->getGwItemsSku($storeId);
367
+ $this->_productGiftPair[$lineNumber] = $item->getSku();
368
 
369
  return $lineNumber;
370
  }
390
  $gwPrintedCardSku = Mage::helper('avatax')->getGwPrintedCardSku($storeId);
391
  $line->setItemCode($gwPrintedCardSku ? $gwPrintedCardSku : 'GwPrintedCardAmount');
392
  $line->setDescription('Gift Wrap Printed Card Amount');
393
+ $line->setTaxCode($this->_getGiftTaxClassCode($storeId));
394
  $line->setQty(1);
395
  $line->setAmount($gwPrintedCardAmount);
396
  $line->setDiscounted(false);
404
  /**
405
  * Adds all items in the cart to the request
406
  *
407
+ * @param Mage_Sales_Model_Quote_Item $item
408
  * @return int
409
  */
410
  protected function _addItemsInCart($item)
421
  $this->_initProductCollection($items);
422
  $this->_initTaxClassCollection($item->getAddress());
423
  foreach ($items as $item) {
424
+ /** @var Mage_Sales_Model_Quote_Item $item */
425
+ $this->_newLine($item);
 
 
426
  }
427
  $this->_request->setLines($this->_lines);
428
  }
438
  */
439
  protected function _newLine($item)
440
  {
441
+ $this->_addGwItemsAmount($item);
442
  if ($this->isProductCalculated($item)) {
443
  return false;
444
  }
445
  $product = $this->_getProductByProductId($item->getProductId());
446
+ $taxClass = $this->_getTaxClassCodeByProduct($product);
447
  $price = $item->getBaseRowTotal() - $item->getBaseDiscountAmount();
448
  $lineNumber = count($this->_lines);
449
  $line = new Line();
453
  $line->setQty($item->getQty());
454
  $line->setAmount($price);
455
  $line->setDiscounted($item->getDiscountAmount() ? true : false);
456
+
457
  if ($taxClass) {
458
  $line->setTaxCode($taxClass);
459
  }
467
  }
468
 
469
  $this->_lines[$lineNumber] = $line;
470
+ $this->_lineToLineId[$lineNumber] = $item->getSku();
471
  return $lineNumber;
472
  }
473
 
474
  /**
475
+ * Get item id/code for given line
476
  *
477
+ * @param TaxLine $line
478
+ * @return string|int
 
479
  */
480
+ protected function _getItemIdByLine($line)
481
  {
482
+ return isset($this->_productGiftPair[$line->getNo()])
483
+ ? $this->_productGiftPair[$line->getNo()]
484
+ : $this->_lineToLineId[$line->getNo()];
485
+ }
 
486
 
487
+ /**
488
+ * Get tax array code for given line
489
+ *
490
+ * @param TaxLine $line
491
+ * @return string
492
+ */
493
+ protected function _getTaxArrayCodeByLine($line)
494
+ {
495
+ return isset($this->_productGiftPair[$line->getNo()]) ? 'gw_items' : 'items';
496
  }
497
  }
app/code/community/OnePica/AvaTax/Model/Avatax/Invoice.php CHANGED
@@ -42,7 +42,7 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
42
  * Save order in AvaTax system
43
  *
44
  * @see OnePica_AvaTax_Model_Observer::salesOrderPlaceAfter()
45
- * @param Mage_Sales_Model_Order_Invoice $invoice
46
  * @param OnePica_AvaTax_Model_Records_Queue $queue
47
  * @return bool
48
  * @throws OnePica_AvaTax_Exception
@@ -52,9 +52,10 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
52
  public function invoice($invoice, $queue)
53
  {
54
  $order = $invoice->getOrder();
55
- $invoiceDate = $invoice->getCreatedAt();
56
- $orderDate = $order->getCreatedAt();
57
- $statusDate = $queue->getUpdatedAt();
 
58
 
59
  $shippingAddress = ($order->getShippingAddress()) ? $order->getShippingAddress() : $order->getBillingAddress();
60
  if (!$shippingAddress) {
@@ -78,10 +79,10 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
78
  $this->_setOriginAddress($order->getStoreId());
79
  $this->_setDestinationAddress($shippingAddress);
80
 
81
- $this->_request->setDocDate(substr($invoiceDate, 0, 10));
82
- $this->_request->setPaymentDate(substr($invoiceDate, 0, 10));
83
- $this->_request->setTaxDate(substr($orderDate, 0, 10));
84
- $this->_request->setStatusDate(substr($statusDate, 0, 10));
85
 
86
  $configAction = Mage::getStoreConfig('tax/avatax/action', $order->getStoreId());
87
  $commitAction = OnePica_AvaTax_Model_Config::ACTION_CALC_SUBMIT_COMMIT;
@@ -133,9 +134,10 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
133
  public function creditmemo($creditmemo, $queue)
134
  {
135
  $order = $creditmemo->getOrder();
136
- $orderDate = $order->getCreatedAt();
137
- $statusDate = $queue->getUpdatedAt();
138
- $creditmemoDate = $creditmemo->getCreatedAt();
 
139
 
140
  $shippingAddress = ($order->getShippingAddress()) ? $order->getShippingAddress() : $order->getBillingAddress();
141
  if (!$shippingAddress) {
@@ -167,15 +169,15 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
167
 
168
  // Set the tax date for calculation.
169
  $override = new TaxOverride();
170
- $override->setTaxDate(substr($orderDate, 0, 10));
171
  $override->setTaxOverrideType(TaxOverrideType::$TaxDate);
172
  $override->setReason('Credit memo - refund');
173
  $this->_request->setTaxOverride($override);
174
 
175
- $this->_request->setDocDate(substr($creditmemoDate, 0, 10));
176
- $this->_request->setPaymentDate(substr($creditmemoDate, 0, 10));
177
- $this->_request->setTaxDate(substr($orderDate, 0, 10));
178
- $this->_request->setStatusDate(substr($statusDate, 0, 10));
179
 
180
  $configAction = Mage::getStoreConfig('tax/avatax/action', $order->getStoreId());
181
  $commitAction = OnePica_AvaTax_Model_Config::ACTION_CALC_SUBMIT_COMMIT;
@@ -195,7 +197,7 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
195
  $message = Mage::helper('avatax')->__('Credit memo #%s was saved to AvaTax', $result->getDocCode());
196
  $this->_addStatusHistoryComment($order, $message);
197
 
198
- if ($result->getTotalTax() != ($creditmemo->getTaxAmount() * -1)) {
199
  throw new OnePica_AvaTax_Model_Avatax_Exception_Unbalanced(
200
  'Collected: ' . $creditmemo->getTaxAmount() . ', Actual: ' . $result->getTotalTax()
201
  );
@@ -277,7 +279,7 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
277
  $line->setNo($lineNumber);
278
  $line->setItemCode(Mage::helper('avatax')->getGwOrderSku($storeId));
279
  $line->setDescription('Gift Wrap Order Amount');
280
- $line->setTaxCode($this->_getGiftTaxClass());
281
  $line->setQty(1);
282
  $line->setAmount($amount);
283
  $line->setDiscounted(false);
@@ -315,7 +317,7 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
315
  $line->setNo($lineNumber);
316
  $line->setItemCode(Mage::helper('avatax')->getGwItemsSku($storeId));
317
  $line->setDescription('Gift Wrap Items Amount');
318
- $line->setTaxCode($this->_getGiftTaxClass());
319
  $line->setQty(1);
320
  $line->setAmount($amount);
321
  $line->setDiscounted(false);
@@ -335,7 +337,7 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
335
  */
336
  protected function _addGwPrintedCardAmount($object, $credit = false)
337
  {
338
- if ($object->getGwPrintedCardSku() == 0) {
339
  return false;
340
  }
341
 
@@ -353,7 +355,7 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
353
  $line->setNo($lineNumber);
354
  $line->setItemCode(Mage::helper('avatax')->getGwPrintedCardSku($storeId));
355
  $line->setDescription('Gift Wrap Printed Card Amount');
356
- $line->setTaxCode($this->_getGiftTaxClass());
357
  $line->setQty(1);
358
  $line->setAmount($amount);
359
  $line->setDiscounted(false);
@@ -429,7 +431,7 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
429
 
430
  $storeId = $this->_retrieveStoreIdFromItem($item);
431
  $product = $this->_getProductByProductId($item->getProductId());
432
- $taxClass = $this->_getTaxClassByProduct($product);
433
  $price = $item->getBaseRowTotal() - $item->getBaseDiscountAmount();
434
  if ($credit) {
435
  //@startSkipCommitHooks
@@ -477,4 +479,16 @@ class OnePica_AvaTax_Model_Avatax_Invoice extends OnePica_AvaTax_Model_Avatax_Ab
477
 
478
  return $storeId;
479
  }
 
 
 
 
 
 
 
 
 
 
 
 
480
  }
42
  * Save order in AvaTax system
43
  *
44
  * @see OnePica_AvaTax_Model_Observer::salesOrderPlaceAfter()
45
+ * @param Mage_Sales_Model_Order_Invoice $invoice
46
  * @param OnePica_AvaTax_Model_Records_Queue $queue
47
  * @return bool
48
  * @throws OnePica_AvaTax_Exception
52
  public function invoice($invoice, $queue)
53
  {
54
  $order = $invoice->getOrder();
55
+ $storeId = $order->getStoreId();
56
+ $invoiceDate = $this->_convertGmtDate($invoice->getCreatedAt(), $storeId);
57
+ $orderDate = $this->_convertGmtDate($order->getCreatedAt(), $storeId);
58
+ $statusDate = $this->_convertGmtDate($queue->getUpdatedAt(), $storeId);
59
 
60
  $shippingAddress = ($order->getShippingAddress()) ? $order->getShippingAddress() : $order->getBillingAddress();
61
  if (!$shippingAddress) {
79
  $this->_setOriginAddress($order->getStoreId());
80
  $this->_setDestinationAddress($shippingAddress);
81
 
82
+ $this->_request->setDocDate($invoiceDate);
83
+ $this->_request->setPaymentDate($invoiceDate);
84
+ $this->_request->setTaxDate($orderDate);
85
+ $this->_request->setStatusDate($statusDate);
86
 
87
  $configAction = Mage::getStoreConfig('tax/avatax/action', $order->getStoreId());
88
  $commitAction = OnePica_AvaTax_Model_Config::ACTION_CALC_SUBMIT_COMMIT;
134
  public function creditmemo($creditmemo, $queue)
135
  {
136
  $order = $creditmemo->getOrder();
137
+ $storeId = $order->getStoreId();
138
+ $orderDate = $this->_convertGmtDate($order->getCreatedAt(), $storeId);
139
+ $statusDate = $this->_convertGmtDate($queue->getUpdatedAt(), $storeId);
140
+ $creditmemoDate = $this->_convertGmtDate($creditmemo->getCreatedAt(), $storeId);
141
 
142
  $shippingAddress = ($order->getShippingAddress()) ? $order->getShippingAddress() : $order->getBillingAddress();
143
  if (!$shippingAddress) {
169
 
170
  // Set the tax date for calculation.
171
  $override = new TaxOverride();
172
+ $override->setTaxDate($orderDate);
173
  $override->setTaxOverrideType(TaxOverrideType::$TaxDate);
174
  $override->setReason('Credit memo - refund');
175
  $this->_request->setTaxOverride($override);
176
 
177
+ $this->_request->setDocDate($creditmemoDate);
178
+ $this->_request->setPaymentDate($creditmemoDate);
179
+ $this->_request->setTaxDate($orderDate);
180
+ $this->_request->setStatusDate($statusDate);
181
 
182
  $configAction = Mage::getStoreConfig('tax/avatax/action', $order->getStoreId());
183
  $commitAction = OnePica_AvaTax_Model_Config::ACTION_CALC_SUBMIT_COMMIT;
197
  $message = Mage::helper('avatax')->__('Credit memo #%s was saved to AvaTax', $result->getDocCode());
198
  $this->_addStatusHistoryComment($order, $message);
199
 
200
+ if ($result->getTotalTax() != ($creditmemo->getBaseTaxAmount() * -1)) {
201
  throw new OnePica_AvaTax_Model_Avatax_Exception_Unbalanced(
202
  'Collected: ' . $creditmemo->getTaxAmount() . ', Actual: ' . $result->getTotalTax()
203
  );
279
  $line->setNo($lineNumber);
280
  $line->setItemCode(Mage::helper('avatax')->getGwOrderSku($storeId));
281
  $line->setDescription('Gift Wrap Order Amount');
282
+ $line->setTaxCode($this->_getGiftTaxClassCode($storeId));
283
  $line->setQty(1);
284
  $line->setAmount($amount);
285
  $line->setDiscounted(false);
317
  $line->setNo($lineNumber);
318
  $line->setItemCode(Mage::helper('avatax')->getGwItemsSku($storeId));
319
  $line->setDescription('Gift Wrap Items Amount');
320
+ $line->setTaxCode($this->_getGiftTaxClassCode($storeId));
321
  $line->setQty(1);
322
  $line->setAmount($amount);
323
  $line->setDiscounted(false);
337
  */
338
  protected function _addGwPrintedCardAmount($object, $credit = false)
339
  {
340
+ if (!$object->getGwPrintedCardBasePrice()) {
341
  return false;
342
  }
343
 
355
  $line->setNo($lineNumber);
356
  $line->setItemCode(Mage::helper('avatax')->getGwPrintedCardSku($storeId));
357
  $line->setDescription('Gift Wrap Printed Card Amount');
358
+ $line->setTaxCode($this->_getGiftTaxClassCode($storeId));
359
  $line->setQty(1);
360
  $line->setAmount($amount);
361
  $line->setDiscounted(false);
431
 
432
  $storeId = $this->_retrieveStoreIdFromItem($item);
433
  $product = $this->_getProductByProductId($item->getProductId());
434
+ $taxClass = $this->_getTaxClassCodeByProduct($product);
435
  $price = $item->getBaseRowTotal() - $item->getBaseDiscountAmount();
436
  if ($credit) {
437
  //@startSkipCommitHooks
479
 
480
  return $storeId;
481
  }
482
+
483
+ /**
484
+ * Retrieve converted date taking into account the current time zone and store.
485
+ *
486
+ * @param string $gmt
487
+ * @param int $storeId
488
+ * @return string
489
+ */
490
+ protected function _convertGmtDate($gmt, $storeId)
491
+ {
492
+ return Mage::app()->getLocale()->storeDate($storeId, $gmt)->toString(Varien_Date::DATE_INTERNAL_FORMAT);
493
+ }
494
  }
app/code/community/OnePica/AvaTax/Model/Sales/Quote/Address/Total/Tax.php CHANGED
@@ -66,10 +66,13 @@ class OnePica_AvaTax_Model_Sales_Quote_Address_Total_Tax extends Mage_Sales_Mode
66
  $item->setAddress($address);
67
  $baseAmount = $calculator->getItemTax($item);
68
 
69
- $giftBaseTaxAmount = $calculator->getItemGiftTax($item);
70
- $giftTaxAmount = Mage::app()->getStore()->convertPrice($giftBaseTaxAmount);
 
 
 
71
 
72
- $amount = Mage::app()->getStore()->convertPrice($baseAmount);
73
  $percent = $calculator->getItemRate($item);
74
 
75
  $item->setTaxAmount($amount);
@@ -87,19 +90,20 @@ class OnePica_AvaTax_Model_Sales_Quote_Address_Total_Tax extends Mage_Sales_Mode
87
  if (!$calculator->isProductCalculated($item)) {
88
  $this->_addAmount($amount);
89
  $this->_addBaseAmount($baseAmount);
90
- $this->_addAmount($giftTaxAmount);
91
- $this->_addBaseAmount($giftBaseTaxAmount);
92
  }
 
 
93
  }
94
 
95
  if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING
96
- || $address->getUseForShipping()) {
 
97
  $shippingItem = new Varien_Object();
98
- $shippingItem->setId(Mage::helper('avatax')->getShippingSku($store->getId()));
99
  $shippingItem->setProductId(Mage::helper('avatax')->getShippingSku($store->getId()));
100
  $shippingItem->setAddress($address);
101
  $baseShippingTax = $calculator->getItemTax($shippingItem);
102
- $shippingTax = Mage::app()->getStore()->convertPrice($baseShippingTax);
103
 
104
  $shippingAmt = $address->getTotalAmount('shipping');
105
  $baseShippingAmt = $address->getBaseTotalAmount('shipping');
@@ -118,11 +122,11 @@ class OnePica_AvaTax_Model_Sales_Quote_Address_Total_Tax extends Mage_Sales_Mode
118
 
119
  if ($address->getGwPrice() > 0) {
120
  $gwOrderItem = new Varien_Object();
121
- $gwOrderItem->setId(Mage::helper('avatax')->getGwOrderSku($store->getId()));
122
  $gwOrderItem->setProductId(Mage::helper('avatax')->getGwOrderSku($store->getId()));
123
  $gwOrderItem->setAddress($address);
124
  $baseGwOrderTax = $calculator->getItemTax($gwOrderItem);
125
- $gwOrderTax = Mage::app()->getStore()->convertPrice($baseGwOrderTax);
126
 
127
  $address->setGwBaseTaxAmount($baseGwOrderTax);
128
  $address->setGwTaxAmount($gwOrderTax);
@@ -133,16 +137,14 @@ class OnePica_AvaTax_Model_Sales_Quote_Address_Total_Tax extends Mage_Sales_Mode
133
 
134
  if ($address->getGwAddPrintedCard()) {
135
  $gwPrintedCardItem = new Varien_Object();
136
- $gwPrintedCardItem->setId(Mage::helper('avatax')->getGwPrintedCardSku($store->getId()));
137
  $gwPrintedCardItem->setProductId(Mage::helper('avatax')->getGwPrintedCardSku($store->getId()));
138
  $gwPrintedCardItem->setAddress($address);
139
  $baseGwPrintedCardTax = $calculator->getItemTax($gwPrintedCardItem);
140
- $gwPrintedCardTax = Mage::app()->getStore()->convertPrice($baseGwPrintedCardTax);
141
 
142
- $address->setGwPrintedCardBaseTaxAmount(
143
- $address->getGwPrintedCardBasePrice() + $baseGwPrintedCardTax
144
- );
145
- $address->setGwPrintedCardTaxAmount($address->getGwPrintedCardPrice() + $gwPrintedCardTax);
146
 
147
  $this->_addAmount($gwPrintedCardTax);
148
  $this->_addBaseAmount($baseGwPrintedCardTax);
@@ -302,4 +304,14 @@ class OnePica_AvaTax_Model_Sales_Quote_Address_Total_Tax extends Mage_Sales_Mode
302
  }
303
  return $this->_address;
304
  }
 
 
 
 
 
 
 
 
 
 
305
  }
66
  $item->setAddress($address);
67
  $baseAmount = $calculator->getItemTax($item);
68
 
69
+ $giftBaseTaxTotalAmount = $calculator->getItemGiftTax($item);
70
+ $giftTaxTotalAmount = $store->convertPrice($giftBaseTaxTotalAmount);
71
+ $giftBaseTaxAmount = $this->_getDataHelper()
72
+ ->roundUp($giftBaseTaxTotalAmount / $item->getQty(), 2);
73
+ $giftTaxAmount = $store->convertPrice($giftBaseTaxAmount);
74
 
75
+ $amount = $store->convertPrice($baseAmount);
76
  $percent = $calculator->getItemRate($item);
77
 
78
  $item->setTaxAmount($amount);
90
  if (!$calculator->isProductCalculated($item)) {
91
  $this->_addAmount($amount);
92
  $this->_addBaseAmount($baseAmount);
 
 
93
  }
94
+ $this->_addAmount($giftTaxTotalAmount);
95
+ $this->_addBaseAmount($giftBaseTaxTotalAmount);
96
  }
97
 
98
  if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING
99
+ || $address->getUseForShipping()
100
+ ) {
101
  $shippingItem = new Varien_Object();
102
+ $shippingItem->setSku(Mage::helper('avatax')->getShippingSku($store->getId()));
103
  $shippingItem->setProductId(Mage::helper('avatax')->getShippingSku($store->getId()));
104
  $shippingItem->setAddress($address);
105
  $baseShippingTax = $calculator->getItemTax($shippingItem);
106
+ $shippingTax = $store->convertPrice($baseShippingTax);
107
 
108
  $shippingAmt = $address->getTotalAmount('shipping');
109
  $baseShippingAmt = $address->getBaseTotalAmount('shipping');
122
 
123
  if ($address->getGwPrice() > 0) {
124
  $gwOrderItem = new Varien_Object();
125
+ $gwOrderItem->setSku(Mage::helper('avatax')->getGwOrderSku($store->getId()));
126
  $gwOrderItem->setProductId(Mage::helper('avatax')->getGwOrderSku($store->getId()));
127
  $gwOrderItem->setAddress($address);
128
  $baseGwOrderTax = $calculator->getItemTax($gwOrderItem);
129
+ $gwOrderTax = $store->convertPrice($baseGwOrderTax);
130
 
131
  $address->setGwBaseTaxAmount($baseGwOrderTax);
132
  $address->setGwTaxAmount($gwOrderTax);
137
 
138
  if ($address->getGwAddPrintedCard()) {
139
  $gwPrintedCardItem = new Varien_Object();
140
+ $gwPrintedCardItem->setSku(Mage::helper('avatax')->getGwPrintedCardSku($store->getId()));
141
  $gwPrintedCardItem->setProductId(Mage::helper('avatax')->getGwPrintedCardSku($store->getId()));
142
  $gwPrintedCardItem->setAddress($address);
143
  $baseGwPrintedCardTax = $calculator->getItemTax($gwPrintedCardItem);
144
+ $gwPrintedCardTax = $store->convertPrice($baseGwPrintedCardTax);
145
 
146
+ $address->setGwPrintedCardBaseTaxAmount($baseGwPrintedCardTax);
147
+ $address->setGwPrintedCardTaxAmount($gwPrintedCardTax);
 
 
148
 
149
  $this->_addAmount($gwPrintedCardTax);
150
  $this->_addBaseAmount($baseGwPrintedCardTax);
304
  }
305
  return $this->_address;
306
  }
307
+
308
+ /**
309
+ * Get data helper
310
+ *
311
+ * @return \OnePica_AvaTax_Helper_Data
312
+ */
313
+ protected function _getDataHelper()
314
+ {
315
+ return Mage::helper('avatax');
316
+ }
317
  }
app/code/community/OnePica/AvaTax/etc/config.xml CHANGED
@@ -19,7 +19,7 @@
19
  <config>
20
  <modules>
21
  <OnePica_AvaTax>
22
- <version>2.6.0.4</version>
23
  </OnePica_AvaTax>
24
  </modules>
25
  <global>
19
  <config>
20
  <modules>
21
  <OnePica_AvaTax>
22
+ <version>2.6.1.4</version>
23
  </OnePica_AvaTax>
24
  </modules>
25
  <global>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>OnePica_AvaTax</name>
4
- <version>2.6.0</version>
5
  <stability>stable</stability>
6
  <license>Open Software License (OSL 3.0)</license>
7
  <channel>community</channel>
@@ -19,13 +19,17 @@ Released as a commercial extension, this software will not work unless you have
19
  &#xD;
20
  At One Pica (www.onepica.com), we strive to build increasingly scalable and flexible enterprise systems for all of our clients, large and small. We want to give back to this community both to promote its success and as a sign of our gratitude. Please feel free to contact us on ways we can improve this extension or extend on this framework.</description>
21
  <notes>Added global feature support&#xD;
22
- Fixed tax calculation with gifting options&#xD;
23
- Fixed double sending of invoice to Avalara&#xD;
24
- Fixed settings in admin displaying when extension is in disabled mode</notes>
 
 
 
 
25
  <authors><author><name>Rostyslav Redko</name><user>marketing</user><email>avalara@onepica.com</email></author></authors>
26
- <date>2015-09-15</date>
27
- <time>13:07:55</time>
28
- <contents><target name="magecommunity"><dir name="OnePica"><dir name="AvaTax"><dir name="Block"><dir name="Adminhtml"><dir name="Export"><dir name="Abstract"><file name="Grid.php" hash="5f96ca490c5f7bd3fac23e30b00336e5"/></dir><dir name="Log"><file name="Grid.php" hash="311c55d8bc770e6d6aa6f377c2eee6fd"/><file name="View.php" hash="097d82a3e2b1a8820d335a63f212451b"/></dir><dir name="Queue"><file name="Grid.php" hash="1ef8ba9bf3e0870ea6dc50bb202a0b91"/></dir></dir><dir name="Notification"><file name="Toolbar.php" hash="a31bc4d477eaa87b45da1113c7e4b8b6"/></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Export.php" hash="9a34cc10bf2e179725517be980d8ef17"/></dir></dir></dir></dir><dir name="Tax"><dir name="Class"><dir name="Edit"><file name="Form.php" hash="0e78c592366ee2746f3891cf91a388d3"/></dir><file name="Grid.php" hash="d731eb160457b8a22cfcd28682a1c485"/></dir></dir></dir><dir name="Checkout"><dir name="Onepage"><dir name="Shipping"><dir name="Method"><file name="Available.php" hash="c8ad904b71f344cfd1e01ceea7556dd1"/></dir></dir></dir></dir></dir><file name="Exception.php" hash="fc752f8da808a402baae2425c4072d22"/><dir name="Helper"><file name="Data.php" hash="e322daae3d5b00923fb1e626f9c6fbef"/><dir name="Tax"><file name="Data.php" hash="e041b574919704a2ddc5173d38edda91"/></dir></dir><dir name="Model"><file name="Abstract.php" hash="97f0ae95e164849371f09dbb7b1afd86"/><dir name="Admin"><file name="Session.php" hash="e3dc3353c7eebf4e17c22ea4039585c5"/></dir><dir name="Adminhtml"><file name="Config.php" hash="e3656ed052c4bd143822369ffed5a5c7"/><dir name="Sales"><dir name="Order"><file name="Create.php" hash="08253fde693e39124b4b4f242c238852"/></dir></dir></dir><dir name="Avatax"><file name="Abstract.php" hash="4a85927eb751e61afa730de51644fa43"/><file name="Address.php" hash="7c269d14d30b2faa1fbce281e6047889"/><file name="Estimate.php" hash="54288c99dacabfdc887d6294a0cb17c7"/><dir name="Exception"><file name="Address.php" hash="66761b418530d8682666a0ed6987ff3e"/><file name="Commitfailure.php" hash="81257541dd1d679493cfd2d3c5b6366e"/><file name="Unbalanced.php" hash="dc7967d9c5780b45ecb0828d5a1fc6dc"/></dir><file name="Invoice.php" hash="e54d02d2341c74087716413f44f32881"/><file name="Ping.php" hash="57b77948291fda5c6fe15733fd96a3c0"/></dir><file name="Config.php" hash="623922ea0cb4b335d2fca188f6f4f405"/><dir name="Export"><dir name="Adapter"><file name="Abstract.php" hash="840c8b87acd97646572bba9bb3b8f5ea"/><file name="Sql.php" hash="0e9bedb400f411785311f78ebbf676da"/></dir><dir name="Entity"><file name="Abstract.php" hash="d38a2293452c31e92f81bf5be59c3e1c"/><file name="Log.php" hash="a1dd28eee3e72d1a4ef7bddd865ddbae"/><file name="Queue.php" hash="14a97c283aa74f97982ab71160017aa3"/></dir></dir><file name="Export.php" hash="b94613b678b413d6268b07d314ba122e"/><file name="Observer.php" hash="31cf1af00c679866b93fe3a1dc9dae2b"/><dir name="Records"><file name="Log.php" hash="9a95ea609f75fa416c4564de8d3af4a2"/><dir name="Mysql4"><dir name="Log"><file name="Collection.php" hash="29db8163f4dda862ff822ddffd04554d"/></dir><file name="Log.php" hash="d6fb7997768b7e0f1b39363fd4de5917"/><dir name="Queue"><file name="Collection.php" hash="11bba1561c81f39695f091b94bd81560"/></dir><file name="Queue.php" hash="ad319339f577fdbbba740c52848a272c"/></dir><dir name="Queue"><file name="Process.php" hash="77092de76e08561d16759660b4a4f0c4"/></dir><file name="Queue.php" hash="17e369325bcac42042676bb61a2248c5"/></dir><dir name="Sales"><dir name="Quote"><dir name="Address"><dir name="Total"><file name="Grand.php" hash="63fb5a808ad3c16d2ed15f1dafad7937"/><file name="Tax.php" hash="6f8474734da74dc13297a38a295a58f9"/></dir></dir><file name="Address.php" hash="3191bbdf4e2227d35cf588dde798731b"/></dir></dir><file name="Session.php" hash="429142089e75418a702e70edc56374cf"/><dir name="Source"><file name="Actions.php" hash="879b80f92f735402f57e316546b16984"/><file name="Addressvalidation.php" hash="9f2315018910f7336ad894156d49d9b9"/><file name="Customercodeformat.php" hash="cfcfcbaa27ed29add072324816da0c9d"/><file name="Error.php" hash="7f5495a2f295ded2d0a30f2f7108d009"/><file name="Fieldlist.php" hash="18987603d4d58130959a8ac76716ed08"/><file name="Logmode.php" hash="24d61da578a3b4adb896fea7d4d4d8ec"/><file name="Logtype.php" hash="4079ebbf7ef44593e631b8cc9f0fc2a5"/><file name="Onerrorfrontend.php" hash="ef4154ae563d8157c1083f20e0adf563"/><dir name="Regionfilter"><file name="List.php" hash="ed98a569d45cb5b014107f0fda52d735"/><file name="Mode.php" hash="27fdc94c6f162100d55005285b5170df"/></dir></dir><dir name="Tax"><file name="Config.php" hash="6168c0d674a44291b7dbfe358305a04b"/></dir><dir name="Total"><dir name="Quote"><dir name="Tax"><file name="Giftwrapping.php" hash="ff5f4418766f31933ae0a184ffaab946"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="ExportController.php" hash="0ad97f1a39563925b5e33d6e9ca07885"/><file name="GridController.php" hash="91f38761378ff91d1f9c396b1cb3c150"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="92c529d045fa34fd0822b6ccb40bd4ed"/><file name="config.xml" hash="7547321aa50d7cdcfe08035e6e8e0789"/><file name="system-disabled.xml" hash="588cd3c8ddbf05eea324e2c85f28c195"/><file name="system.xml" hash="befdcbd7ca59d45dee7d0d5631c81b47"/></dir><dir name="sql"><dir name="avatax_records_setup"><file name="mysql4-data-upgrade-2.2.0-2.2.1.php" hash="260d1c57754ebadba00d8ccdbb0ec996"/><file name="mysql4-install-0.1.0.php" hash="3d16899179b36bfde69609a99a2faae6"/><file name="mysql4-upgrade-0.1.4-0.1.5.php" hash="94d0cf2fc0e9bbe2de2829198ce3026f"/><file name="mysql4-upgrade-1.0.1-2.0.0.php" hash="905d7519328cdb1c46bba4221288c41c"/><file name="mysql4-upgrade-2.5.0.0-2.5.0.1.php" hash="4b439957397049bbe01d458fd7cfe0a2"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="OnePica_AvaTax.xml" hash="07fd9423811b4dc084060d6131b889d7"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="onepica"><file name="avatax.xml" hash="a2514046fa0428d24a25f82d17627843"/></dir></dir><dir name="template"><dir name="onepica"><dir name="avatax"><dir name="log"><file name="view.phtml" hash="df14eee805bbedd484cf500dbf2335ed"/></dir><dir name="notification"><file name="toolbar.phtml" hash="fd368e043843df76ec3a74290b87dc3e"/></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="onepica"><file name="avatax.xml" hash="38c6ce2165f6ccfd6641eb1487faad39"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="en_US"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="es_ES"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="fr_FR"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="nl_NL"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="pt_BR"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="zh_CN"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir></target><target name="magelib"><dir name="AvaTax"><file name="AvaTax.php" hash="26989654c44655c391758b9b82c3fc97"/><dir name="classes"><file name="ATConfig.class.php" hash="cac35e53e2dbd0f50c689d9ea63ffef7"/><file name="ATObject.class.php" hash="7e19ef9e2bf9f068c0074c89b5e182c4"/><file name="Address.class.php" hash="2d8f324e4f5d1f5aab46c607e7996470"/><file name="AddressServiceSoap.class.php" hash="72cead0fb71cf50ea205725e3581db43"/><file name="AddressType.class.php" hash="5fe3117c43c9e72782c99fe9f05e6d44"/><file name="AdjustTaxRequest.class.php" hash="88ae06a8a6af2bb4f606df2a5d3311b3"/><file name="AdjustTaxResult.class.php" hash="244b36ac53068f7d31e1f675292bc633"/><file name="ApplyPaymentRequest.class.php" hash="97c03c4b9e3e971d4f02c465158e57c5"/><file name="ApplyPaymentResult.class.php" hash="151fef191bbf5b5680dc17b68bd1fd5b"/><dir name="AvaCert2Svc"><file name="AvaCert2Soap.class.php" hash="011512b904f890fff8f83d8d12c32137"/><file name="Certificate.class.php" hash="148fb1033df9617143df3c0e56930b2e"/><file name="CertificateGetRequest.class.php" hash="f430a993f08f0a061cb8eeb8d2f72888"/><file name="CertificateGetResult.class.php" hash="9fa85bbabaca47bbeb1cbb0d5649565a"/><file name="CertificateImageGetRequest.class.php" hash="3a50a5e435b721224e6319318dd63ef1"/><file name="CertificateImageGetResult.class.php" hash="a579ccb4c5bbdfb6e78f4713ce9d3362"/><file name="CertificateJurisdiction.class.php" hash="7aa081021ddfe5f8208f8a7c85b6c4b5"/><file name="CertificateRequest.class.php" hash="88d48e898ff3026e03ef84ef6e10f095"/><file name="CertificateRequestGetRequest.class.php" hash="e21c5f0f4fedcacf6419378c9348701c"/><file name="CertificateRequestGetResult.class.php" hash="ba7e8558f1c49eeedba3ceb8d9f408e1"/><file name="CertificateRequestInitiateRequest.class.php" hash="277b647bbe7ed8a4ac6abb71098c2bcd"/><file name="CertificateRequestInitiateResult.class.php" hash="0fa5b3ad1287273abf91af3c620e462c"/><file name="CertificateRequestStage.class.php" hash="e69c9a74d81f487c106c54b7f3fb1557"/><file name="CertificateRequestStatus.class.php" hash="2e718743928ad93705a7b9b72ae01791"/><file name="CertificateStatus.class.php" hash="5644c784f7404af14fa790c0a4987f2f"/><file name="CertificateUsage.class.php" hash="1c849c3118546241482b2fbc3040eb68"/><file name="CommunicationMode.class.php" hash="45be17774b1d31307d1c07419b68fa86"/><file name="Customer.class.php" hash="9d6604f45014bc919551f3427a1f6096"/><file name="CustomerSaveRequest.class.php" hash="448f65a1ed1a469198c92ea5228565a5"/><file name="CustomerSaveResult.class.php" hash="ca833de9567ee04deeef9e0c67bc6906"/><file name="FormatType.class.php" hash="a5da25399b4db992f94980a42d80a894"/><file name="RequestType.class.php" hash="b8cb7931e1cdf437fbca74d33b7372c8"/><file name="ReviewStatus.class.php" hash="f026a188fd126a722743b7f193ab790d"/></dir><file name="AvalaraSoapClient.class.php" hash="a1ef291d4f3f60ff7aebe2231b48b7a1"/><file name="BaseResult.class.php" hash="5643a0cfac67684d689b5214fa449c78"/><dir name="BatchSvc"><file name="AuditMessage.class.php" hash="c5d32e8221163fc3b32bb8aeaa36b6ca"/><file name="AvaTaxBatchSvc.php" hash="b74e21e6381e4d124895cccc9d7b2e85"/><file name="BaseResult.class.php" hash="b66a3e1b84fda37475ec0cf5eab72631"/><file name="Batch.class.php" hash="e2c09672a5bc642803924afd56c81353"/><file name="BatchDelete.class.php" hash="f0a0262c2c9d98d206db30811524372a"/><file name="BatchDeleteResponse.class.php" hash="7fc5ba8b16e4b3c2e23fa2f9b22527b9"/><file name="BatchFetch.class.php" hash="99a36be1615da5ee74364434bbc7b395"/><file name="BatchFetchResponse.class.php" hash="0979f86a3aebc4a980241a66aff8be5b"/><file name="BatchFetchResult.class.php" hash="b5d1ef7ed331c13da8aeb4dbf8786b49"/><file name="BatchFile.class.php" hash="f276bb7844ec659daa4f8e48d02b3de4"/><file name="BatchFileDelete.class.php" hash="61e1f12cbe1cd03394e3da9219bfeb28"/><file name="BatchFileDeleteResponse.class.php" hash="8c46b1855f5b2f80e43486ecc76e9da7"/><file name="BatchFileFetch.class.php" hash="434b21f695fe1a4a98755d89548a0582"/><file name="BatchFileFetchResponse.class.php" hash="60ebb86596058188550bc28deefa80e9"/><file name="BatchFileFetchResult.class.php" hash="0c27895ca6e531e45ed684fa983f605f"/><file name="BatchFileSave.class.php" hash="1c7689a40fb435185507649aa05be0a1"/><file name="BatchFileSaveResponse.class.php" hash="a9317ce4b16fd03a655262f677b8c4f5"/><file name="BatchFileSaveResult.class.php" hash="22083e9f476643f765dfb212f66a6d44"/><file name="BatchProcess.class.php" hash="7f74ee2c8132422029e9bd2df004fcf2"/><file name="BatchProcessRequest.class.php" hash="418941b17d58b1a4f3852ed9f33082d4"/><file name="BatchProcessResponse.class.php" hash="19a6ca5665990b5ed8a5eb96c418380a"/><file name="BatchProcessResult.class.php" hash="238dc3924533d0cebed26b69cb297d3a"/><file name="BatchSave.class.php" hash="61d914a1f31ec41e0cf6c17d4609afaa"/><file name="BatchSaveResponse.class.php" hash="0d43f7251a987b236265b410857dd28b"/><file name="BatchSaveResult.class.php" hash="c07d8c4c3a972fa633b5251b85e2004e"/><file name="BatchSvc.class.php" hash="6756e5f46f50076d87ba36d5e333e57c"/><file name="DeleteRequest.class.php" hash="889e52100944e0a0ea55f3b07d3bd2ad"/><file name="DeleteResult.class.php" hash="1c07ae35a5c700cbde27d55ca0f28de2"/><file name="FetchRequest.class.php" hash="9c25698d7d0917d9f196673cc66a651b"/><file name="FilterRequest.class.php" hash="03c664a1e1a883b164879bc2be36c2bd"/><file name="FilterResult.class.php" hash="ef1a819f3786e9f577ec82fa9feb35ec"/><file name="IsAuthorized.class.php" hash="ec5f302437e1dca3cbd74ab320455f39"/><file name="IsAuthorizedResponse.class.php" hash="101dd46745a27e14980cf641e2f72dfc"/><file name="IsAuthorizedResult.class.php" hash="f55df9606c0efa6c0dc92eec2fd0938c"/><file name="Message.class.php" hash="106e66c6429b3a226c257fc3f25a6b67"/><file name="Ping.class.php" hash="1fe9cbed451083691655e8be68c787b5"/><file name="PingResponse.class.php" hash="7ffa8e8c97ecf6e2a16dc099e25f42fc"/><file name="PingResult.class.php" hash="46b9973ac9e8abf2ec0017b998a0c9c3"/><file name="Profile.class.php" hash="cdb9c3fac721d6f36d0b5d9f4302553d"/><file name="SeverityLevel.class.php" hash="1d9d5e106362d218c955770b315b5f81"/></dir><file name="BoundaryLevel.class.php" hash="253b8a05322b8e231919687f3827a7b5"/><file name="CancelCode.class.php" hash="d18bf4c911c3e8f61276379b38b19a2f"/><file name="CancelTaxRequest.class.php" hash="a9695b4f52190a8564418756a0803f4f"/><file name="CancelTaxResult.class.php" hash="14481a7ffadcdcac39d62054ba71de03"/><file name="CommitTaxRequest.class.php" hash="44c1b2572e472b1f5039d4951720e253"/><file name="CommitTaxResult.class.php" hash="c3011037fde1267653cada283a98be06"/><file name="DetailLevel.class.php" hash="77bd93452c5aff9ebb55775090f0ccb3"/><file name="DocStatus.class.php" hash="e997874e8837ab16c41c5d8a22674e90"/><file name="DocumentType.class.php" hash="758fc459c61b61f74fcd1eea3db2e4db"/><file name="DynamicSoapClient.class.php" hash="340af2b0cc31e6d2af86bca2107660fa"/><file name="Enum.class.php" hash="c42f3aff54c5575626149dd68b9548a1"/><file name="GetTaxHistoryRequest.class.php" hash="3affe503b0fb3b893271e16b3b4fc55a"/><file name="GetTaxHistoryResult.class.php" hash="7846121d29d5ac72e9b5e5c159a3d1e0"/><file name="GetTaxRequest.class.php" hash="ee45f7351ef19ffb2c9e0b8e79aa9bf1"/><file name="GetTaxResult.class.php" hash="a10ca0bf9fa9c144cab7047c8e24a11f"/><file name="IsAuthorizedResult.class.php" hash="daf9c6678d96536202118aca416593f0"/><file name="JurisdictionType.class.php" hash="89ebf55527a1c6c2fa7d875f97aa3890"/><file name="Line.class.php" hash="53c00d0b7d7c6f04807bfde0a32e8b3e"/><file name="Message.class.php" hash="a597a20d4e71d8359f5716e4090f5f91"/><file name="PingResult.class.php" hash="89fba1b1b4ebf9b5305841a95b1abea5"/><file name="PostTaxRequest.class.php" hash="45e5b40f965b37451ef1ff55003589cd"/><file name="PostTaxResult.class.php" hash="17643f25442780d7bbf9ecdb3fefd560"/><file name="ReconcileTaxHistoryRequest.class.php" hash="cd9c75c27b67aa3b0d602d7b58a84833"/><file name="ReconcileTaxHistoryResult.class.php" hash="467947a86b364e275bf43cb1faff2c98"/><file name="SearchTaxHistoryResult.class.php" hash="931aa2769869e17ea14081b2619bc189"/><file name="ServiceMode.class.php" hash="1fb48c918639b8fb6a6fa19b04236b3a"/><file name="SeverityLevel.class.php" hash="10056ae4392ce28ce3cbd0ca7c940178"/><file name="TaxDetail.class.php" hash="ef9e531bf185e58e76f09bfd4737e5f4"/><file name="TaxLine.class.php" hash="179f26ad8b7969aae73d7e83837961b4"/><file name="TaxOverride.class.php" hash="b7f6d15c23cbd5493a39d0448c345c02"/><file name="TaxOverrideType.class.php" hash="bd4f08a9742010694496048122b77d74"/><file name="TaxRequest.class.php" hash="3e8cf3ae19656365282c47b141c5409c"/><file name="TaxServiceSoap.class.php" hash="1c5b5ee61bad472c18727914045d70f3"/><file name="TaxType.class.php" hash="76c213ba5dff5fe71388ed9b12926c6e"/><file name="TextCase.class.php" hash="8ff721c254f32afef24176fb7d1aea52"/><file name="ValidAddress.class.php" hash="b651bb1ed9e937be0babe2fc5e7ab7f7"/><file name="ValidateRequest.class.php" hash="17f34c99a63d32cb2e17eef7fb0ffdea"/><file name="ValidateResult.class.php" hash="e8bdece299be6bcb1fa38e3714e01ae0"/><dir name="wsdl"><file name="Address.wsdl" hash="37ac1778f42147b548e09c8bb39b3cfc"/><file name="AvaCert2Svc.wsdl" hash="60da5aa0484ce00b82d7675ea3fd6454"/><file name="AvaCertSvc.wsdl" hash="25d03720f7018ea027c3345ec2c69c8e"/><file name="BatchSvc.wsdl" hash="798a715e28b9751b01666a29554135f7"/><file name="Tax.wsdl" hash="051420912d3e0b2489ae250c47059166"/></dir></dir><file name="functions.php" hash="57734d162b59cbc65933d25bf3950270"/></dir></target></contents>
29
  <compatible/>
30
  <dependencies><required><php><min>5.2.3</min><max>6.0.0</max></php><extension><name>Core</name><min/><max/></extension><extension><name>curl</name><min/><max/></extension><extension><name>soap</name><min/><max/></extension></required></dependencies>
31
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>OnePica_AvaTax</name>
4
+ <version>2.6.1</version>
5
  <stability>stable</stability>
6
  <license>Open Software License (OSL 3.0)</license>
7
  <channel>community</channel>
19
  &#xD;
20
  At One Pica (www.onepica.com), we strive to build increasingly scalable and flexible enterprise systems for all of our clients, large and small. We want to give back to this community both to promote its success and as a sign of our gratitude. Please feel free to contact us on ways we can improve this extension or extend on this framework.</description>
21
  <notes>Added global feature support&#xD;
22
+ Fixed issue with multiple requests to Avalara&#xD;
23
+ Fixed tax class for gifting options&#xD;
24
+ Fixed tax calculation for gift options&#xD;
25
+ Fixed timezone issues when send invoice/creditmemo to Avalara&#xD;
26
+ Fixed company value code send when create order in admin for non-default store&#xD;
27
+ Fixed vat id value for checkout with multiple addresses&#xD;
28
+ Fixed currency conversion for non default store</notes>
29
  <authors><author><name>Rostyslav Redko</name><user>marketing</user><email>avalara@onepica.com</email></author></authors>
30
+ <date>2015-10-01</date>
31
+ <time>09:43:19</time>
32
+ <contents><target name="magecommunity"><dir name="OnePica"><dir name="AvaTax"><dir name="Block"><dir name="Adminhtml"><dir name="Export"><dir name="Abstract"><file name="Grid.php" hash="5f96ca490c5f7bd3fac23e30b00336e5"/></dir><dir name="Log"><file name="Grid.php" hash="311c55d8bc770e6d6aa6f377c2eee6fd"/><file name="View.php" hash="097d82a3e2b1a8820d335a63f212451b"/></dir><dir name="Queue"><file name="Grid.php" hash="1ef8ba9bf3e0870ea6dc50bb202a0b91"/></dir></dir><dir name="Notification"><file name="Toolbar.php" hash="a31bc4d477eaa87b45da1113c7e4b8b6"/></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Export.php" hash="9a34cc10bf2e179725517be980d8ef17"/></dir></dir></dir></dir><dir name="Tax"><dir name="Class"><dir name="Edit"><file name="Form.php" hash="0e78c592366ee2746f3891cf91a388d3"/></dir><file name="Grid.php" hash="d731eb160457b8a22cfcd28682a1c485"/></dir></dir></dir><dir name="Checkout"><dir name="Onepage"><dir name="Shipping"><dir name="Method"><file name="Available.php" hash="c8ad904b71f344cfd1e01ceea7556dd1"/></dir></dir></dir></dir></dir><file name="Exception.php" hash="fc752f8da808a402baae2425c4072d22"/><dir name="Helper"><file name="Data.php" hash="bd631c0e65b789d253d1abf3a4532326"/><dir name="Tax"><file name="Data.php" hash="e041b574919704a2ddc5173d38edda91"/></dir></dir><dir name="Model"><file name="Abstract.php" hash="97f0ae95e164849371f09dbb7b1afd86"/><dir name="Admin"><file name="Session.php" hash="e3dc3353c7eebf4e17c22ea4039585c5"/></dir><dir name="Adminhtml"><file name="Config.php" hash="e3656ed052c4bd143822369ffed5a5c7"/><dir name="Sales"><dir name="Order"><file name="Create.php" hash="08253fde693e39124b4b4f242c238852"/></dir></dir></dir><dir name="Avatax"><file name="Abstract.php" hash="b8c44571e04c86a3d9aa2e96c69e71fa"/><file name="Address.php" hash="7c269d14d30b2faa1fbce281e6047889"/><file name="Estimate.php" hash="74481f4cc1fb34efc32fc8b824498308"/><dir name="Exception"><file name="Address.php" hash="66761b418530d8682666a0ed6987ff3e"/><file name="Commitfailure.php" hash="81257541dd1d679493cfd2d3c5b6366e"/><file name="Unbalanced.php" hash="dc7967d9c5780b45ecb0828d5a1fc6dc"/></dir><file name="Invoice.php" hash="289c9f884ff20435018ff993ddd66518"/><file name="Ping.php" hash="57b77948291fda5c6fe15733fd96a3c0"/></dir><file name="Config.php" hash="623922ea0cb4b335d2fca188f6f4f405"/><dir name="Export"><dir name="Adapter"><file name="Abstract.php" hash="840c8b87acd97646572bba9bb3b8f5ea"/><file name="Sql.php" hash="0e9bedb400f411785311f78ebbf676da"/></dir><dir name="Entity"><file name="Abstract.php" hash="d38a2293452c31e92f81bf5be59c3e1c"/><file name="Log.php" hash="a1dd28eee3e72d1a4ef7bddd865ddbae"/><file name="Queue.php" hash="14a97c283aa74f97982ab71160017aa3"/></dir></dir><file name="Export.php" hash="b94613b678b413d6268b07d314ba122e"/><file name="Observer.php" hash="31cf1af00c679866b93fe3a1dc9dae2b"/><dir name="Records"><file name="Log.php" hash="9a95ea609f75fa416c4564de8d3af4a2"/><dir name="Mysql4"><dir name="Log"><file name="Collection.php" hash="29db8163f4dda862ff822ddffd04554d"/></dir><file name="Log.php" hash="d6fb7997768b7e0f1b39363fd4de5917"/><dir name="Queue"><file name="Collection.php" hash="11bba1561c81f39695f091b94bd81560"/></dir><file name="Queue.php" hash="ad319339f577fdbbba740c52848a272c"/></dir><dir name="Queue"><file name="Process.php" hash="77092de76e08561d16759660b4a4f0c4"/></dir><file name="Queue.php" hash="17e369325bcac42042676bb61a2248c5"/></dir><dir name="Sales"><dir name="Quote"><dir name="Address"><dir name="Total"><file name="Grand.php" hash="63fb5a808ad3c16d2ed15f1dafad7937"/><file name="Tax.php" hash="cf83ec631fc356095f7e1ce6f581adaf"/></dir></dir><file name="Address.php" hash="3191bbdf4e2227d35cf588dde798731b"/></dir></dir><file name="Session.php" hash="429142089e75418a702e70edc56374cf"/><dir name="Source"><file name="Actions.php" hash="879b80f92f735402f57e316546b16984"/><file name="Addressvalidation.php" hash="9f2315018910f7336ad894156d49d9b9"/><file name="Customercodeformat.php" hash="cfcfcbaa27ed29add072324816da0c9d"/><file name="Error.php" hash="7f5495a2f295ded2d0a30f2f7108d009"/><file name="Fieldlist.php" hash="18987603d4d58130959a8ac76716ed08"/><file name="Logmode.php" hash="24d61da578a3b4adb896fea7d4d4d8ec"/><file name="Logtype.php" hash="4079ebbf7ef44593e631b8cc9f0fc2a5"/><file name="Onerrorfrontend.php" hash="ef4154ae563d8157c1083f20e0adf563"/><dir name="Regionfilter"><file name="List.php" hash="ed98a569d45cb5b014107f0fda52d735"/><file name="Mode.php" hash="27fdc94c6f162100d55005285b5170df"/></dir></dir><dir name="Tax"><file name="Config.php" hash="6168c0d674a44291b7dbfe358305a04b"/></dir><dir name="Total"><dir name="Quote"><dir name="Tax"><file name="Giftwrapping.php" hash="ff5f4418766f31933ae0a184ffaab946"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="ExportController.php" hash="0ad97f1a39563925b5e33d6e9ca07885"/><file name="GridController.php" hash="91f38761378ff91d1f9c396b1cb3c150"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="92c529d045fa34fd0822b6ccb40bd4ed"/><file name="config.xml" hash="c8b48a3aec5cb3170ebf0dcdc65286fc"/><file name="system-disabled.xml" hash="588cd3c8ddbf05eea324e2c85f28c195"/><file name="system.xml" hash="befdcbd7ca59d45dee7d0d5631c81b47"/></dir><dir name="sql"><dir name="avatax_records_setup"><file name="mysql4-data-upgrade-2.2.0-2.2.1.php" hash="260d1c57754ebadba00d8ccdbb0ec996"/><file name="mysql4-install-0.1.0.php" hash="3d16899179b36bfde69609a99a2faae6"/><file name="mysql4-upgrade-0.1.4-0.1.5.php" hash="94d0cf2fc0e9bbe2de2829198ce3026f"/><file name="mysql4-upgrade-1.0.1-2.0.0.php" hash="905d7519328cdb1c46bba4221288c41c"/><file name="mysql4-upgrade-2.5.0.0-2.5.0.1.php" hash="4b439957397049bbe01d458fd7cfe0a2"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="OnePica_AvaTax.xml" hash="07fd9423811b4dc084060d6131b889d7"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="onepica"><file name="avatax.xml" hash="a2514046fa0428d24a25f82d17627843"/></dir></dir><dir name="template"><dir name="onepica"><dir name="avatax"><dir name="log"><file name="view.phtml" hash="df14eee805bbedd484cf500dbf2335ed"/></dir><dir name="notification"><file name="toolbar.phtml" hash="fd368e043843df76ec3a74290b87dc3e"/></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="onepica"><file name="avatax.xml" hash="38c6ce2165f6ccfd6641eb1487faad39"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="en_US"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="es_ES"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="fr_FR"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="nl_NL"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="pt_BR"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir><dir name="zh_CN"><file name="OnePica_AvaTax.csv" hash="43d2dee74aee6f15abd471a65b4f407c"/></dir></target><target name="magelib"><dir name="AvaTax"><file name="AvaTax.php" hash="26989654c44655c391758b9b82c3fc97"/><dir name="classes"><file name="ATConfig.class.php" hash="cac35e53e2dbd0f50c689d9ea63ffef7"/><file name="ATObject.class.php" hash="7e19ef9e2bf9f068c0074c89b5e182c4"/><file name="Address.class.php" hash="2d8f324e4f5d1f5aab46c607e7996470"/><file name="AddressServiceSoap.class.php" hash="72cead0fb71cf50ea205725e3581db43"/><file name="AddressType.class.php" hash="5fe3117c43c9e72782c99fe9f05e6d44"/><file name="AdjustTaxRequest.class.php" hash="88ae06a8a6af2bb4f606df2a5d3311b3"/><file name="AdjustTaxResult.class.php" hash="244b36ac53068f7d31e1f675292bc633"/><file name="ApplyPaymentRequest.class.php" hash="97c03c4b9e3e971d4f02c465158e57c5"/><file name="ApplyPaymentResult.class.php" hash="151fef191bbf5b5680dc17b68bd1fd5b"/><dir name="AvaCert2Svc"><file name="AvaCert2Soap.class.php" hash="011512b904f890fff8f83d8d12c32137"/><file name="Certificate.class.php" hash="148fb1033df9617143df3c0e56930b2e"/><file name="CertificateGetRequest.class.php" hash="f430a993f08f0a061cb8eeb8d2f72888"/><file name="CertificateGetResult.class.php" hash="9fa85bbabaca47bbeb1cbb0d5649565a"/><file name="CertificateImageGetRequest.class.php" hash="3a50a5e435b721224e6319318dd63ef1"/><file name="CertificateImageGetResult.class.php" hash="a579ccb4c5bbdfb6e78f4713ce9d3362"/><file name="CertificateJurisdiction.class.php" hash="7aa081021ddfe5f8208f8a7c85b6c4b5"/><file name="CertificateRequest.class.php" hash="88d48e898ff3026e03ef84ef6e10f095"/><file name="CertificateRequestGetRequest.class.php" hash="e21c5f0f4fedcacf6419378c9348701c"/><file name="CertificateRequestGetResult.class.php" hash="ba7e8558f1c49eeedba3ceb8d9f408e1"/><file name="CertificateRequestInitiateRequest.class.php" hash="277b647bbe7ed8a4ac6abb71098c2bcd"/><file name="CertificateRequestInitiateResult.class.php" hash="0fa5b3ad1287273abf91af3c620e462c"/><file name="CertificateRequestStage.class.php" hash="e69c9a74d81f487c106c54b7f3fb1557"/><file name="CertificateRequestStatus.class.php" hash="2e718743928ad93705a7b9b72ae01791"/><file name="CertificateStatus.class.php" hash="5644c784f7404af14fa790c0a4987f2f"/><file name="CertificateUsage.class.php" hash="1c849c3118546241482b2fbc3040eb68"/><file name="CommunicationMode.class.php" hash="45be17774b1d31307d1c07419b68fa86"/><file name="Customer.class.php" hash="9d6604f45014bc919551f3427a1f6096"/><file name="CustomerSaveRequest.class.php" hash="448f65a1ed1a469198c92ea5228565a5"/><file name="CustomerSaveResult.class.php" hash="ca833de9567ee04deeef9e0c67bc6906"/><file name="FormatType.class.php" hash="a5da25399b4db992f94980a42d80a894"/><file name="RequestType.class.php" hash="b8cb7931e1cdf437fbca74d33b7372c8"/><file name="ReviewStatus.class.php" hash="f026a188fd126a722743b7f193ab790d"/></dir><file name="AvalaraSoapClient.class.php" hash="a1ef291d4f3f60ff7aebe2231b48b7a1"/><file name="BaseResult.class.php" hash="5643a0cfac67684d689b5214fa449c78"/><dir name="BatchSvc"><file name="AuditMessage.class.php" hash="c5d32e8221163fc3b32bb8aeaa36b6ca"/><file name="AvaTaxBatchSvc.php" hash="b74e21e6381e4d124895cccc9d7b2e85"/><file name="BaseResult.class.php" hash="b66a3e1b84fda37475ec0cf5eab72631"/><file name="Batch.class.php" hash="e2c09672a5bc642803924afd56c81353"/><file name="BatchDelete.class.php" hash="f0a0262c2c9d98d206db30811524372a"/><file name="BatchDeleteResponse.class.php" hash="7fc5ba8b16e4b3c2e23fa2f9b22527b9"/><file name="BatchFetch.class.php" hash="99a36be1615da5ee74364434bbc7b395"/><file name="BatchFetchResponse.class.php" hash="0979f86a3aebc4a980241a66aff8be5b"/><file name="BatchFetchResult.class.php" hash="b5d1ef7ed331c13da8aeb4dbf8786b49"/><file name="BatchFile.class.php" hash="f276bb7844ec659daa4f8e48d02b3de4"/><file name="BatchFileDelete.class.php" hash="61e1f12cbe1cd03394e3da9219bfeb28"/><file name="BatchFileDeleteResponse.class.php" hash="8c46b1855f5b2f80e43486ecc76e9da7"/><file name="BatchFileFetch.class.php" hash="434b21f695fe1a4a98755d89548a0582"/><file name="BatchFileFetchResponse.class.php" hash="60ebb86596058188550bc28deefa80e9"/><file name="BatchFileFetchResult.class.php" hash="0c27895ca6e531e45ed684fa983f605f"/><file name="BatchFileSave.class.php" hash="1c7689a40fb435185507649aa05be0a1"/><file name="BatchFileSaveResponse.class.php" hash="a9317ce4b16fd03a655262f677b8c4f5"/><file name="BatchFileSaveResult.class.php" hash="22083e9f476643f765dfb212f66a6d44"/><file name="BatchProcess.class.php" hash="7f74ee2c8132422029e9bd2df004fcf2"/><file name="BatchProcessRequest.class.php" hash="418941b17d58b1a4f3852ed9f33082d4"/><file name="BatchProcessResponse.class.php" hash="19a6ca5665990b5ed8a5eb96c418380a"/><file name="BatchProcessResult.class.php" hash="238dc3924533d0cebed26b69cb297d3a"/><file name="BatchSave.class.php" hash="61d914a1f31ec41e0cf6c17d4609afaa"/><file name="BatchSaveResponse.class.php" hash="0d43f7251a987b236265b410857dd28b"/><file name="BatchSaveResult.class.php" hash="c07d8c4c3a972fa633b5251b85e2004e"/><file name="BatchSvc.class.php" hash="6756e5f46f50076d87ba36d5e333e57c"/><file name="DeleteRequest.class.php" hash="889e52100944e0a0ea55f3b07d3bd2ad"/><file name="DeleteResult.class.php" hash="1c07ae35a5c700cbde27d55ca0f28de2"/><file name="FetchRequest.class.php" hash="9c25698d7d0917d9f196673cc66a651b"/><file name="FilterRequest.class.php" hash="03c664a1e1a883b164879bc2be36c2bd"/><file name="FilterResult.class.php" hash="ef1a819f3786e9f577ec82fa9feb35ec"/><file name="IsAuthorized.class.php" hash="ec5f302437e1dca3cbd74ab320455f39"/><file name="IsAuthorizedResponse.class.php" hash="101dd46745a27e14980cf641e2f72dfc"/><file name="IsAuthorizedResult.class.php" hash="f55df9606c0efa6c0dc92eec2fd0938c"/><file name="Message.class.php" hash="106e66c6429b3a226c257fc3f25a6b67"/><file name="Ping.class.php" hash="1fe9cbed451083691655e8be68c787b5"/><file name="PingResponse.class.php" hash="7ffa8e8c97ecf6e2a16dc099e25f42fc"/><file name="PingResult.class.php" hash="46b9973ac9e8abf2ec0017b998a0c9c3"/><file name="Profile.class.php" hash="cdb9c3fac721d6f36d0b5d9f4302553d"/><file name="SeverityLevel.class.php" hash="1d9d5e106362d218c955770b315b5f81"/></dir><file name="BoundaryLevel.class.php" hash="253b8a05322b8e231919687f3827a7b5"/><file name="CancelCode.class.php" hash="d18bf4c911c3e8f61276379b38b19a2f"/><file name="CancelTaxRequest.class.php" hash="a9695b4f52190a8564418756a0803f4f"/><file name="CancelTaxResult.class.php" hash="14481a7ffadcdcac39d62054ba71de03"/><file name="CommitTaxRequest.class.php" hash="44c1b2572e472b1f5039d4951720e253"/><file name="CommitTaxResult.class.php" hash="c3011037fde1267653cada283a98be06"/><file name="DetailLevel.class.php" hash="77bd93452c5aff9ebb55775090f0ccb3"/><file name="DocStatus.class.php" hash="e997874e8837ab16c41c5d8a22674e90"/><file name="DocumentType.class.php" hash="758fc459c61b61f74fcd1eea3db2e4db"/><file name="DynamicSoapClient.class.php" hash="340af2b0cc31e6d2af86bca2107660fa"/><file name="Enum.class.php" hash="c42f3aff54c5575626149dd68b9548a1"/><file name="GetTaxHistoryRequest.class.php" hash="3affe503b0fb3b893271e16b3b4fc55a"/><file name="GetTaxHistoryResult.class.php" hash="7846121d29d5ac72e9b5e5c159a3d1e0"/><file name="GetTaxRequest.class.php" hash="ee45f7351ef19ffb2c9e0b8e79aa9bf1"/><file name="GetTaxResult.class.php" hash="a10ca0bf9fa9c144cab7047c8e24a11f"/><file name="IsAuthorizedResult.class.php" hash="daf9c6678d96536202118aca416593f0"/><file name="JurisdictionType.class.php" hash="89ebf55527a1c6c2fa7d875f97aa3890"/><file name="Line.class.php" hash="53c00d0b7d7c6f04807bfde0a32e8b3e"/><file name="Message.class.php" hash="a597a20d4e71d8359f5716e4090f5f91"/><file name="PingResult.class.php" hash="89fba1b1b4ebf9b5305841a95b1abea5"/><file name="PostTaxRequest.class.php" hash="45e5b40f965b37451ef1ff55003589cd"/><file name="PostTaxResult.class.php" hash="17643f25442780d7bbf9ecdb3fefd560"/><file name="ReconcileTaxHistoryRequest.class.php" hash="cd9c75c27b67aa3b0d602d7b58a84833"/><file name="ReconcileTaxHistoryResult.class.php" hash="467947a86b364e275bf43cb1faff2c98"/><file name="SearchTaxHistoryResult.class.php" hash="931aa2769869e17ea14081b2619bc189"/><file name="ServiceMode.class.php" hash="1fb48c918639b8fb6a6fa19b04236b3a"/><file name="SeverityLevel.class.php" hash="10056ae4392ce28ce3cbd0ca7c940178"/><file name="TaxDetail.class.php" hash="ef9e531bf185e58e76f09bfd4737e5f4"/><file name="TaxLine.class.php" hash="179f26ad8b7969aae73d7e83837961b4"/><file name="TaxOverride.class.php" hash="b7f6d15c23cbd5493a39d0448c345c02"/><file name="TaxOverrideType.class.php" hash="bd4f08a9742010694496048122b77d74"/><file name="TaxRequest.class.php" hash="3e8cf3ae19656365282c47b141c5409c"/><file name="TaxServiceSoap.class.php" hash="1c5b5ee61bad472c18727914045d70f3"/><file name="TaxType.class.php" hash="76c213ba5dff5fe71388ed9b12926c6e"/><file name="TextCase.class.php" hash="8ff721c254f32afef24176fb7d1aea52"/><file name="ValidAddress.class.php" hash="b651bb1ed9e937be0babe2fc5e7ab7f7"/><file name="ValidateRequest.class.php" hash="17f34c99a63d32cb2e17eef7fb0ffdea"/><file name="ValidateResult.class.php" hash="e8bdece299be6bcb1fa38e3714e01ae0"/><dir name="wsdl"><file name="Address.wsdl" hash="37ac1778f42147b548e09c8bb39b3cfc"/><file name="AvaCert2Svc.wsdl" hash="60da5aa0484ce00b82d7675ea3fd6454"/><file name="AvaCertSvc.wsdl" hash="25d03720f7018ea027c3345ec2c69c8e"/><file name="BatchSvc.wsdl" hash="798a715e28b9751b01666a29554135f7"/><file name="Tax.wsdl" hash="051420912d3e0b2489ae250c47059166"/></dir></dir><file name="functions.php" hash="57734d162b59cbc65933d25bf3950270"/></dir></target></contents>
33
  <compatible/>
34
  <dependencies><required><php><min>5.2.3</min><max>6.0.0</max></php><extension><name>Core</name><min/><max/></extension><extension><name>curl</name><min/><max/></extension><extension><name>soap</name><min/><max/></extension></required></dependencies>
35
  </package>