Mage_Exactor_Tax - Version 2012.06.19

Version Notes

Supported Magento 1.5.0.0 - 1.7.x

Download this release

Release Info

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


Code changes from version 2012.06.18 to 2012.06.19

app/code/local/Exactor/Core/etc/config.xml CHANGED
@@ -28,7 +28,7 @@
28
  <config>
29
  <modules>
30
  <Exactor_Core>
31
- <version>2012.06.14</version>
32
  </Exactor_Core>
33
  </modules>
34
  <global>
28
  <config>
29
  <modules>
30
  <Exactor_Core>
31
+ <version>2012.06.19</version>
32
  </Exactor_Core>
33
  </modules>
34
  <global>
app/code/local/Exactor/Tax/Helper/Mapping.php CHANGED
@@ -20,6 +20,7 @@ class Exactor_Tax_Helper_Mapping extends Mage_Core_Helper_Abstract {
20
 
21
  const LINE_ITEM_ID_SHIPPING = "SHIPPING";
22
  const LINE_ITEM_ID_HANDLING = "HANDLING";
 
23
 
24
  const ATTRIBUTE_NAME_EXEMPTION = 'taxvat';
25
 
@@ -32,6 +33,8 @@ class Exactor_Tax_Helper_Mapping extends Mage_Core_Helper_Abstract {
32
 
33
  const UNKNOWN_STREET_TEXT = "";
34
 
 
 
35
  private function getLogger(){
36
  if ($this->logger==null)
37
  $this->logger = ExactorLoggingFactory::getInstance()->getLogger($this);
@@ -154,7 +157,7 @@ class Exactor_Tax_Helper_Mapping extends Mage_Core_Helper_Abstract {
154
  * @return void
155
  */
156
  private function getHandlingFeeByMethodName($name){
157
- if (strpos($name,'_')) $name = substr($name,0,strpos($name,'_'));
158
  // Fetch carriers information from Magento config to determine handling amount
159
  $carriers = Mage::getStoreConfig('carriers');
160
  if (!array_key_exists($name, $carriers)) return 0;
@@ -258,9 +261,12 @@ class Exactor_Tax_Helper_Mapping extends Mage_Core_Helper_Abstract {
258
  // Line items list
259
  $magentoItems = $quoteAddress->getAllItems();
260
  $itemNum = 0;
 
 
 
261
  foreach ($magentoItems as $magentoItem){
262
  $exactorLineItem = $this->buildLineItemForMagentoItem($magentoItem, $quoteAddress, $merchantSettings);
263
- $exactorLineItem->setId('_' . $itemNum++);
264
  // If this is non-multishipping request we should set
265
  // ship to address to billing address for VIRTUAL ITEMS
266
  if (!$isMultishipping){
20
 
21
  const LINE_ITEM_ID_SHIPPING = "SHIPPING";
22
  const LINE_ITEM_ID_HANDLING = "HANDLING";
23
+ const INDEXED_LINE_ITEM_ID_PREFIX = '_';
24
 
25
  const ATTRIBUTE_NAME_EXEMPTION = 'taxvat';
26
 
33
 
34
  const UNKNOWN_STREET_TEXT = "";
35
 
36
+
37
+
38
  private function getLogger(){
39
  if ($this->logger==null)
40
  $this->logger = ExactorLoggingFactory::getInstance()->getLogger($this);
157
  * @return void
158
  */
159
  private function getHandlingFeeByMethodName($name){
160
+ if (strpos($name, "_")) $name = substr($name,0,strpos($name, "_"));
161
  // Fetch carriers information from Magento config to determine handling amount
162
  $carriers = Mage::getStoreConfig('carriers');
163
  if (!array_key_exists($name, $carriers)) return 0;
261
  // Line items list
262
  $magentoItems = $quoteAddress->getAllItems();
263
  $itemNum = 0;
264
+ /**
265
+ * @var $magentoItem Mage_Sales_Model_Quote_Item
266
+ */
267
  foreach ($magentoItems as $magentoItem){
268
  $exactorLineItem = $this->buildLineItemForMagentoItem($magentoItem, $quoteAddress, $merchantSettings);
269
+ $exactorLineItem->setId(self::INDEXED_LINE_ITEM_ID_PREFIX . $magentoItem->getProductId());
270
  // If this is non-multishipping request we should set
271
  // ship to address to billing address for VIRTUAL ITEMS
272
  if (!$isMultishipping){
app/code/local/Exactor/Tax/Model/Sales/Total/Quote/Tax.php CHANGED
@@ -120,13 +120,13 @@ class Exactor_Tax_Model_Sales_Total_Quote_Tax extends Mage_Sales_Model_Quote_Add
120
  $merchantSettings = $this->loadMerchantSettings($address);
121
 
122
  if ($merchantSettings == null){
123
- $this->applyTax(0);
124
- $this->logger->info(self::LOG_MESSAGE_TAX_CALC_FAILED . 'Missing or invalid Merchant Settings. Pass request to internal Mage tax calc. system', 'collect');
 
125
  $internalTaxCalculator = Mage::getSingleton("Mage_Tax_Model_Sales_Total_Quote_Tax");
126
  return $internalTaxCalculator->collect($address);
127
  //return $this->processTaxCalculationFail('Missing or invalid Merchant Settings');
128
  }
129
-
130
  // Preparing Exactor Invoice Request
131
  $invoiceRequest = $this->exactorMappingHelper->buildInvoiceRequestForQuoteAddress($address, $merchantSettings, $this->isMultishippingRequest());
132
  $this->logger->trace('Invoice ' . serialize($invoiceRequest),'collect');
@@ -144,11 +144,14 @@ class Exactor_Tax_Model_Sales_Total_Quote_Tax extends Mage_Sales_Model_Quote_Add
144
  return $this->processTaxCalculationFail($msg);
145
  }else{
146
  $invoiceResponse = $exactorResponse->getFirstInvoice();
147
- if ($invoiceResponse!=null)
148
  $calculatedTax = $invoiceResponse->getTotalTaxAmount();
 
 
149
  }
150
  }catch(Exception $e){ // Critical Exactor communication error - Network timeout for instance
151
  $this->applyTax(0);
 
152
  $this->logger->error(self::LOG_MESSAGE_TAX_CALC_FAILED . $e->getMessage(), 'collect');
153
  $this->session->addError($e->getMessage());
154
  }
@@ -157,11 +160,66 @@ class Exactor_Tax_Model_Sales_Total_Quote_Tax extends Mage_Sales_Model_Quote_Add
157
  $address->setBaseTaxAmount($calculatedTax);
158
  }else{
159
  $this->applyTax($address->getTaxAmount());
 
 
 
 
 
 
 
 
 
 
 
 
160
  }
161
  return $this;
162
  }
163
 
164
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  private function applyTax($amount){
166
  $this->_setBaseAmount($amount);
167
  $this->_setAmount($amount);
120
  $merchantSettings = $this->loadMerchantSettings($address);
121
 
122
  if ($merchantSettings == null){
123
+ /*$this->applyTax(0);
124
+ $this->resetTaxForItems($address);*/
125
+ $this->logger->info(self::LOG_MESSAGE_TAX_CALC_FAILED . ' Missing or invalid Merchant Settings. Pass request to internal Mage tax calc. system', 'collect');
126
  $internalTaxCalculator = Mage::getSingleton("Mage_Tax_Model_Sales_Total_Quote_Tax");
127
  return $internalTaxCalculator->collect($address);
128
  //return $this->processTaxCalculationFail('Missing or invalid Merchant Settings');
129
  }
 
130
  // Preparing Exactor Invoice Request
131
  $invoiceRequest = $this->exactorMappingHelper->buildInvoiceRequestForQuoteAddress($address, $merchantSettings, $this->isMultishippingRequest());
132
  $this->logger->trace('Invoice ' . serialize($invoiceRequest),'collect');
144
  return $this->processTaxCalculationFail($msg);
145
  }else{
146
  $invoiceResponse = $exactorResponse->getFirstInvoice();
147
+ if ($invoiceResponse!=null){
148
  $calculatedTax = $invoiceResponse->getTotalTaxAmount();
149
+ $this->applyTaxForItems($address, $invoiceResponse);
150
+ }
151
  }
152
  }catch(Exception $e){ // Critical Exactor communication error - Network timeout for instance
153
  $this->applyTax(0);
154
+ $this->resetTaxForItems($address);
155
  $this->logger->error(self::LOG_MESSAGE_TAX_CALC_FAILED . $e->getMessage(), 'collect');
156
  $this->session->addError($e->getMessage());
157
  }
160
  $address->setBaseTaxAmount($calculatedTax);
161
  }else{
162
  $this->applyTax($address->getTaxAmount());
163
+ // For some reason shipping tax is 0 on this point
164
+ // We can't fetch it from the anywhere because we don't store any amounts,
165
+ // Thus the only solution for us - to calculate it. It's a little bit hacky way...
166
+ /**
167
+ * @var Mage_Sales_Model_Quote_Item $item
168
+ */
169
+ $shippingTax = $address->getTaxAmount();
170
+ foreach ($address->getAllItems() as $item){
171
+ $shippingTax -= $item->getTaxAmount();
172
+ }
173
+ $address->setShippingTaxAmount($shippingTax);
174
+ $address->setBaseShippingTaxAmount($shippingTax);
175
  }
176
  return $this;
177
  }
178
 
179
 
180
+ /**
181
+ * Set tax amount for each item
182
+ * @param \Mage_Sales_Model_Quote_Address $address
183
+ * @param InvoiceResponseType $invoice
184
+ * @return void
185
+ */
186
+ private function applyTaxForItems(Mage_Sales_Model_Quote_Address $address, InvoiceResponseType $invoice){
187
+ $i = 0;
188
+ /**
189
+ * @var Mage_Sales_Model_Quote_Item $item
190
+ */
191
+ foreach ($address->getAllItems() as $item){
192
+ $taxResultItem = $invoice->getItemById(Exactor_Tax_Helper_Mapping::INDEXED_LINE_ITEM_ID_PREFIX . $item->getProductId());
193
+ // If there is no item in response - set tax to 0
194
+ if ($taxResultItem==null){
195
+ $item->setTaxAmount(0);
196
+ $item->setBaseTaxAmount(0);
197
+ }else{ // Else - Apply tax to the item
198
+ $item->setTaxAmount($taxResultItem->getTotalTaxAmount());
199
+ $item->setBaseTaxAmount($taxResultItem->getTotalTaxAmount());
200
+ }
201
+ }
202
+ // Set Shipping + handling tax
203
+ $totalShippingTax = 0;
204
+ $shippingTaxItem = $invoice->getItemById(Exactor_Tax_Helper_Mapping::LINE_ITEM_ID_SHIPPING);
205
+ $handlingTaxItem = $invoice->getItemById(Exactor_Tax_Helper_Mapping::LINE_ITEM_ID_HANDLING);
206
+ if ($shippingTaxItem != null) $totalShippingTax+=$shippingTaxItem->getTotalTaxAmount();
207
+ if ($handlingTaxItem != null) $totalShippingTax+=$handlingTaxItem->getTotalTaxAmount();
208
+ $address->setShippingTaxAmount($totalShippingTax);
209
+ $address->setBaseShippingTaxAmount($totalShippingTax);
210
+ }
211
+
212
+ private function resetTaxForItems(Mage_Sales_Model_Quote_Address $address){
213
+ /**
214
+ * @var Mage_Sales_Model_Quote_Item $item
215
+ */
216
+ foreach ($address->getAllItems() as $item){
217
+ $item->setTaxAmount(0);
218
+ $item->setBaseTaxAmount(0);
219
+ }
220
+ $address->setShippingTaxAmount(0);
221
+ }
222
+
223
  private function applyTax($amount){
224
  $this->_setBaseAmount($amount);
225
  $this->_setAmount($amount);
lib/ExactorCommons/ExactorDomainObjects.php CHANGED
@@ -808,6 +808,20 @@ class InvoiceResponseType extends XmlSerializationSupport{
808
  {
809
  return $this->TransactionId;
810
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
811
  }
812
 
813
  class CommitResponseType extends XmlSerializationSupport{
808
  {
809
  return $this->TransactionId;
810
  }
811
+
812
+ /**
813
+ * @param $id
814
+ * @return null|ResponseLineItem
815
+ */
816
+ public function getItemById($id){
817
+ /**
818
+ * @var $item ResponseLineItem
819
+ */
820
+ foreach($this->getLineItems() as $item){
821
+ if ($item->getId() == $id) return $item;
822
+ }
823
+ return null;
824
+ }
825
  }
826
 
827
  class CommitResponseType extends XmlSerializationSupport{
lib/ExactorCommons/config.php CHANGED
@@ -6,6 +6,6 @@
6
  */
7
 
8
  ExactorLoggingFactory::getInstance()->setup('MagentoLogger', IExactorLogger::TRACE);
9
- ExactorConnectionFactory::getInstance()->setup('Magento','v20120618');
10
  ExactorProcessingServiceFactory::getInstance()->setup(new MagentoExactorCallback());
11
 
6
  */
7
 
8
  ExactorLoggingFactory::getInstance()->setup('MagentoLogger', IExactorLogger::TRACE);
9
+ ExactorConnectionFactory::getInstance()->setup('Magento','v20120619');
10
  ExactorProcessingServiceFactory::getInstance()->setup(new MagentoExactorCallback());
11
 
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Mage_Exactor_Tax</name>
4
- <version>2012.06.18</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
@@ -12,9 +12,9 @@ Once installed, neither the merchant, nor the customer, need to perform any addi
12
  For additional information, please refer to the Exactor Magento User Guide that is attached to the plug-in, or which you can download directly from the Exactor control panel (navigate to Account Management Integration Points &amp; PlugIns).</description>
13
  <notes>Supported Magento 1.5.0.0 - 1.7.x</notes>
14
  <authors><author><name>Exactor, Inc.</name><user>exactor</user><email>support@exactor.com</email></author></authors>
15
- <date>2012-06-18</date>
16
- <time>10:39:10</time>
17
- <contents><target name="magelocal"><dir name="Exactor"><dir name="Core"><dir name="Helper"><file name="SessionCache.php" hash="4aab06767188e8ead64043654989473d"/></dir><dir name="Model"><file name="ExactorTransaction.php" hash="852aa20f6e3b7aa0001439d4bffe9724"/><file name="MerchantSettings.php" hash="b4c2acde5dfa929e89ea7ec9fe0f1b2f"/><dir name="Mysql4"><dir name="ExactorTransaction"><file name="Collection.php" hash="c7b890b4d3ab35e65a3856ae0e2fdf72"/></dir><file name="ExactorTransaction.php" hash="c91aebaae767613acf1c439a8b513c3b"/><dir name="MerchantSettings"><file name="Collection.php" hash="c1593f52e582e601409c4651c37495af"/><file name="Collection.php~" hash="d360e202eb30432ac41dc023ce13ffc0"/></dir><file name="MerchantSettings.php" hash="8f22b76bb64cdc7b1deb6f0e38889905"/></dir><dir name="Type"><file name="Onepage.php" hash="2d2aa64ed4562736e77b3cad12e8f48c"/></dir></dir><dir name="etc"><file name="config.xml" hash="8e66f8e4b56b47361902daa7397f87ed"/></dir></dir><dir name="ExactorSettings"><dir name="Block"><file name="Form.php" hash="7dcfb00922cfe305d8ae08cb20ca5e87"/></dir><dir name="Helper"><file name="Data.php" hash="9abafb58b091f8976fa289f394465415"/><file name="VersionResolver.php" hash="14dce068dfe2a7d3364c4bd29e6f8431"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FormController.php" hash="a154f13f8c4c04f838dfb79607078341"/></dir><file name="AjaxController.php" hash="c07aeeca00e1408e52945fc027569793"/><file name="IndexController.php" hash="f47cbc274dd68c57c30b60bbee69259e"/></dir><dir name="etc"><file name="config.xml" hash="6c2f28c302b359abd12565264fa23bc5"/></dir><dir name="sql"><dir name="ExactorSettings_setup"><file name="mysql4-install-14.04.2012.php" hash="f35af1e12921b57479cb4b5677937a0c"/></dir></dir></dir><dir name="Sales"><dir name="Model"><file name="Observer.php" hash="65e826c0493adece2476ed24788ecb06"/></dir><dir name="etc"><file name="config.xml" hash="2d6c2557632003318da9e3165944ecc6"/></dir></dir><dir name="Tax"><dir name="Helper"><file name="Calculation.php" hash="29c5252bdd48b173c90588f449114024"/><file name="Mapping.php" hash="6896d20bf14617568b3a19cb18d902ca"/></dir><dir name="Model"><dir name="Sales"><dir name="Total"><dir name="Quote"><dir name="Nominal"><file name="Tax.php" hash="156eff380df5b16db55449759f193490"/></dir><file name="Tax.php" hash="f3cd0fb3255e6c8b2ccb85e8509250f8"/></dir></dir></dir></dir><dir name="etc"><file name="config.xml" hash="9a653c98a67e3743f45618d0890aab00"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="exactorsettings.xml" hash="3707eac08d2393c8796eebf1cf7a0bd9"/><file name="exactoronestepcheckout.xml" hash="9fdfa1db5e4e60b4eec8f348c10aab07"/></dir><dir name="template"><dir name="ExactorSettings"><file name="settingsform.phtml" hash="c77a9c5461dbb37f0a8835e55f48f1d6"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="exactoronestepcheckout.xml" hash="9fdfa1db5e4e60b4eec8f348c10aab07"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Exactor.xml" hash="e8997e8e36a265141b37790caaef39d6"/></dir></target><target name="mageweb"><dir name="js"><dir name="exactor"><file name="exactor.js" hash="5c23e40f4034e50a6e0df5b1c708b7e1"/></dir></dir></target><target name="magelib"><dir name="ExactorCommons"><file name="ExactorCommons.php" hash="b78ebfdd66c36c419a312fc5c2d1b4bd"/><file name="ExactorDomainObjects.php" hash="390e7f9a18a328d8ef2b67121d1b813e"/><file name="Magento.php" hash="76da7333fe0692053a47f8564c7b513a"/><file name="XmlProcessing.php" hash="383fd21839889d720e2094e83ccc7a2a"/><file name="config.php" hash="f12c65295b05793efd89dd64748282d1"/></dir></target></contents>
18
  <compatible/>
19
  <dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php></required></dependencies>
20
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Mage_Exactor_Tax</name>
4
+ <version>2012.06.19</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
12
  For additional information, please refer to the Exactor Magento User Guide that is attached to the plug-in, or which you can download directly from the Exactor control panel (navigate to Account Management Integration Points &amp; PlugIns).</description>
13
  <notes>Supported Magento 1.5.0.0 - 1.7.x</notes>
14
  <authors><author><name>Exactor, Inc.</name><user>exactor</user><email>support@exactor.com</email></author></authors>
15
+ <date>2012-06-21</date>
16
+ <time>09:40:11</time>
17
+ <contents><target name="magelocal"><dir name="Exactor"><dir name="Core"><dir name="Helper"><file name="SessionCache.php" hash="4aab06767188e8ead64043654989473d"/></dir><dir name="Model"><file name="ExactorTransaction.php" hash="852aa20f6e3b7aa0001439d4bffe9724"/><file name="MerchantSettings.php" hash="b4c2acde5dfa929e89ea7ec9fe0f1b2f"/><dir name="Mysql4"><dir name="ExactorTransaction"><file name="Collection.php" hash="c7b890b4d3ab35e65a3856ae0e2fdf72"/></dir><file name="ExactorTransaction.php" hash="c91aebaae767613acf1c439a8b513c3b"/><dir name="MerchantSettings"><file name="Collection.php" hash="c1593f52e582e601409c4651c37495af"/><file name="Collection.php~" hash="d360e202eb30432ac41dc023ce13ffc0"/></dir><file name="MerchantSettings.php" hash="8f22b76bb64cdc7b1deb6f0e38889905"/></dir><dir name="Type"><file name="Onepage.php" hash="2d2aa64ed4562736e77b3cad12e8f48c"/></dir></dir><dir name="etc"><file name="config.xml" hash="50c2cdf232f06125484ac8a715024262"/></dir></dir><dir name="ExactorSettings"><dir name="Block"><file name="Form.php" hash="7dcfb00922cfe305d8ae08cb20ca5e87"/></dir><dir name="Helper"><file name="Data.php" hash="9abafb58b091f8976fa289f394465415"/><file name="VersionResolver.php" hash="14dce068dfe2a7d3364c4bd29e6f8431"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FormController.php" hash="a154f13f8c4c04f838dfb79607078341"/></dir><file name="AjaxController.php" hash="c07aeeca00e1408e52945fc027569793"/><file name="IndexController.php" hash="f47cbc274dd68c57c30b60bbee69259e"/></dir><dir name="etc"><file name="config.xml" hash="6c2f28c302b359abd12565264fa23bc5"/></dir><dir name="sql"><dir name="ExactorSettings_setup"><file name="mysql4-install-14.04.2012.php" hash="f35af1e12921b57479cb4b5677937a0c"/></dir></dir></dir><dir name="Sales"><dir name="Model"><file name="Observer.php" hash="65e826c0493adece2476ed24788ecb06"/></dir><dir name="etc"><file name="config.xml" hash="2d6c2557632003318da9e3165944ecc6"/></dir></dir><dir name="Tax"><dir name="Helper"><file name="Calculation.php" hash="29c5252bdd48b173c90588f449114024"/><file name="Mapping.php" hash="64c6e0cc3ddb49a836dbbe92b2f97d35"/></dir><dir name="Model"><dir name="Sales"><dir name="Total"><dir name="Quote"><dir name="Nominal"><file name="Tax.php" hash="156eff380df5b16db55449759f193490"/></dir><file name="Tax.php" hash="908dad83333e61933684a9404b13769d"/></dir></dir></dir></dir><dir name="etc"><file name="config.xml" hash="9a653c98a67e3743f45618d0890aab00"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="exactorsettings.xml" hash="3707eac08d2393c8796eebf1cf7a0bd9"/><file name="exactoronestepcheckout.xml" hash="9fdfa1db5e4e60b4eec8f348c10aab07"/></dir><dir name="template"><dir name="ExactorSettings"><file name="settingsform.phtml" hash="c77a9c5461dbb37f0a8835e55f48f1d6"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="exactoronestepcheckout.xml" hash="9fdfa1db5e4e60b4eec8f348c10aab07"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Exactor.xml" hash="e8997e8e36a265141b37790caaef39d6"/></dir></target><target name="mageweb"><dir name="js"><dir name="exactor"><file name="exactor.js" hash="5c23e40f4034e50a6e0df5b1c708b7e1"/></dir></dir></target><target name="magelib"><dir name="ExactorCommons"><file name="ExactorCommons.php" hash="b78ebfdd66c36c419a312fc5c2d1b4bd"/><file name="ExactorDomainObjects.php" hash="3633afb09bd82b35ed141c1200906097"/><file name="Magento.php" hash="76da7333fe0692053a47f8564c7b513a"/><file name="XmlProcessing.php" hash="383fd21839889d720e2094e83ccc7a2a"/><file name="config.php" hash="d921f8e8f9891e2c2cb44bdcd699bfd5"/><file name="config.php~" hash="f12c65295b05793efd89dd64748282d1"/></dir></target></contents>
18
  <compatible/>
19
  <dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php></required></dependencies>
20
  </package>