Asulpunto_Unicentaopos - Version 0.0.5

Version Notes

0.0.5
* Product set can be configured from Admin. This also solves a problem when Magento's default attribute set was deleted.
* The warehouse that will track the stock can be selected from admin configuration.
* Images on Unicenta are tranfered to Magento when the Magento Product does not have any images.

0.0.4
Advanced log to identify database connection issues

0.0.3
First official public release

Download this release

Release Info

Developer asulpunto
Extension Asulpunto_Unicentaopos
Version 0.0.5
Comparing to
See all releases


Code changes from version 0.0.4 to 0.0.5

app/code/community/Asulpunto/Unicentaopos/Helper/Data.php CHANGED
@@ -50,4 +50,13 @@ class Asulpunto_Unicentaopos_Helper_Data extends Mage_Core_Helper_Abstract
50
return $rows;
51
}
52
53
}
50
return $rows;
51
}
52
53
+ public function doExecute($sql){
54
+ $db=$this->getUnicentaOposConnection();
55
+ if (is_null($db)) return null;
56
+ $res=$db->exec($sql);
57
+ return $res;
58
+ }
59
+
60
+
61
+
62
}
app/code/community/Asulpunto/Unicentaopos/Model/Source/Location.php ADDED
@@ -0,0 +1,20 @@
1
+ <?php
2
+ class Asulpunto_Unicentaopos_Model_Source_Location
3
+ {
4
+ protected $_options;
5
+
6
+ public function toOptionArray()
7
+ {
8
+ $locations=Mage::getModel('unicentaopos/unicentaoposapi')->getLocations();
9
+ if (count($locations)==0){
10
+ return array(
11
+ array('value' => '0', 'label' => 'Connection down.'),
12
+ );
13
+ }else{
14
+ $list= array();
15
+ foreach ( $locations as $key => $value)
16
+ $list[]=array('value' => $key, 'label' =>$value );
17
+ }
18
+ return $list;
19
+ }
20
+ }
app/code/community/Asulpunto/Unicentaopos/Model/Source/Producttypelist.php ADDED
@@ -0,0 +1,19 @@
1
+ <?php
2
+ class Asulpunto_Unicentaopos_Model_Source_Producttypelist
3
+ {
4
+ protected $_options;
5
+
6
+ public function toOptionArray()
7
+ {
8
+ $prodType = Mage::getModel('eav/entity_type')->loadByCode('catalog_product');
9
+ $prodAttributeSet = Mage::getModel('eav/entity_attribute_set')->getCollection()->addFilter('entity_type_id',$prodType->getId());
10
+
11
+ $list= array(
12
+ array('value' => '', 'label' => ''),
13
+ );
14
+ foreach ( $prodAttributeSet as $set)
15
+ $list[]=array('value' => $set->getId(), 'label' =>$set->getAttributeSetName() );
16
+
17
+ return $list;
18
+ }
19
+ }
app/code/community/Asulpunto/Unicentaopos/Model/Unicentaoposapi.php CHANGED
@@ -24,6 +24,7 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
24
{
25
private $_UPPHash=array();
26
private $_UPS=array();
27
28
public function checkActivate(){
29
try{
@@ -47,6 +48,7 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
47
public function cronProducts(){
48
try{
49
$this->_loadProductHash();//load a hash of history
50
51
$db=Mage::Helper('unicentaopos')->getUnicentaOposConnection();
52
$sql="select * from `PRODUCTS`";
@@ -54,6 +56,7 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
54
55
foreach ($rows as $row){
56
$this->_getUnicentaProducts($row);
57
}
58
$this->updateMagentoProducts();
59
}catch(Exception $e){
@@ -64,8 +67,9 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
64
public function cronStock(){
65
try{
66
$this->_loadStock();
67
$db=Mage::Helper('unicentaopos')->getUnicentaOposConnection();
68
- $sql="select b.REFERENCE as REFERENCE,a.UNITS as UNITS from `STOCKCURRENT` a , `PRODUCTS` b where a.PRODUCT=b.ID";
69
$rows=$db->query($sql);
70
foreach ($rows as $row){
71
$this->_getUnicentaStock($row);
@@ -76,9 +80,29 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
76
}
77
}
78
79
80
private function _getUnicentaProducts($row){
81
- $updateNeeded=false;
82
83
$md5=md5(
84
$row['CODE'].'|'.
@@ -89,14 +113,18 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
89
);
90
91
if (array_key_exists($row['REFERENCE'],$this->_UPPHash)){
92
if ($this->_UPPHash[$row['REFERENCE']]!=$md5){
93
$updateNeeded=true;
94
$mageRow=$this->_getRowByCode($row['REFERENCE']);
95
}
96
}else{
97
$updateNeeded=true;
98
$mageRow=Mage::getModel('unicentaopos/unicentaoposproduct');
99
}
100
if ($updateNeeded){
101
$mageRow->setName($row['NAME']);
102
$mageRow->setSku($row['REFERENCE']);
@@ -105,7 +133,8 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
105
$mageRow->setCost($row['PRICEBUY']);
106
$mageRow->setPrice($row['PRICESELL']);
107
$mageRow->setStock($row['STOCKVOLUME']);
108
- $mageRow->setInfoupdated(1);
109
$mageRow->save();
110
}
111
}
@@ -172,11 +201,13 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
172
}
173
174
private function _updateUnicentaStock(){
175
$col=Mage::getModel('unicentaopos/unicentaoposorderitem')->getCollection()->addFilter('stockupdated',1);
176
try{
177
$db=Mage::Helper('unicentaopos')->getUnicentaOposConnection();
178
foreach($col as $item){
179
- $sql="UPDATE `STOCKCURRENT` set UNITS=UNITS-{$item->getQuantity()} where PRODUCT=(SELECT ID FROM PRODUCTS WHERE REFERENCE='{$item->getSku()}')";
180
$res=$db->query($sql);
181
$item->setStockupdated(0);
182
$item->save();
@@ -198,7 +229,7 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
198
}
199
200
public function updateMagentoProducts(){
201
- $col=Mage::getModel('unicentaopos/unicentaoposproduct')->getCollection()->addFilter('infoupdated',1);
202
foreach ($col as $row){
203
$this->_saveMagentoProduct($row);
204
}
@@ -230,6 +261,7 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
230
private function _saveMagentoProduct($row){
231
try
232
{
233
$newProduct=false;
234
$product = Mage::getModel('catalog/product');
235
if ($row->getMagentoProductId()){
@@ -239,7 +271,7 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
239
if (!$product->getId()){
240
$product->setSku($row->getSku());
241
$product->setTypeId('simple');
242
- $product->setAttributeSetId(9);
243
$product->setTaxClassId(1);
244
$product->setWeight(0.0);
245
$sData['qty']=$row->getStock();
@@ -256,10 +288,11 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
256
$sData=$product->getStockData($sData);
257
$product->setCostPrice($row->getCost());
258
$product->setPrice($row->getPrice());
259
$product->save();
260
261
if ($newProduct) Mage::getModel('catalog/product_status')->updateProductStatus($product->getId(), 0, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
262
-
263
$row->setInfoupdated(0);
264
$row->setMagentoProductId($product->getId());
265
$row->save();
@@ -269,6 +302,7 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
269
{
270
Mage::log(__METHOD__.$e->getMessage(),null,"asulpunto_unicentaopos.log");
271
}
272
return 0;
273
}
274
@@ -294,5 +328,24 @@ class Asulpunto_Unicentaopos_Model_Unicentaoposapi extends Mage_Core_Model_Abstr
294
unset($cols);
295
}
296
297
298
}
24
{
25
private $_UPPHash=array();
26
private $_UPS=array();
27
+ private $_NoImageProducts=array();
28
29
public function checkActivate(){
30
try{
48
public function cronProducts(){
49
try{
50
$this->_loadProductHash();//load a hash of history
51
+ $this->_noImageProducts();//load products without images so that if change is detected we load them.
52
53
$db=Mage::Helper('unicentaopos')->getUnicentaOposConnection();
54
$sql="select * from `PRODUCTS`";
56
57
foreach ($rows as $row){
58
$this->_getUnicentaProducts($row);
59
+ $this->_doImage($row);
60
}
61
$this->updateMagentoProducts();
62
}catch(Exception $e){
67
public function cronStock(){
68
try{
69
$this->_loadStock();
70
+ $loc=Mage::getStoreConfig('asulpuntounicentaopos/tools/location');
71
$db=Mage::Helper('unicentaopos')->getUnicentaOposConnection();
72
+ $sql="select b.REFERENCE as REFERENCE,a.UNITS as UNITS from `STOCKCURRENT` a , `PRODUCTS` b where a.PRODUCT=b.ID and location='$loc'";
73
$rows=$db->query($sql);
74
foreach ($rows as $row){
75
$this->_getUnicentaStock($row);
80
}
81
}
82
83
+ private function _noImageProducts(){
84
+ $collection=Mage::getModel('unicentaopos/unicentaoposproduct')->getCollection();
85
+ $collection->addFieldToFilter('image', array('null' => true));
86
+ foreach ($collection as $item){
87
+ $this->_NoImageProducts[$item->getSku()]=1;
88
+ }
89
+ }
90
+
91
+ private function _doImage($row){
92
+ if (empty($row['IMAGE'])) return true;
93
+ if (array_key_exists($row['REFERENCE'],$this->_NoImageProducts)){
94
+ $mageRow=$this->_getRowByCode($row['REFERENCE']);
95
+ $mageRow->setImage($row['IMAGE']);
96
+ $mageRow->setInfoupdated(2);
97
+ $mageRow->save();
98
+ }
99
+ }
100
+
101
+
102
103
private function _getUnicentaProducts($row){
104
+ $updateNeeded=false;
105
+ $state=0;
106
107
$md5=md5(
108
$row['CODE'].'|'.
113
);
114
115
if (array_key_exists($row['REFERENCE'],$this->_UPPHash)){
116
+ //First Check Hashkey
117
if ($this->_UPPHash[$row['REFERENCE']]!=$md5){
118
$updateNeeded=true;
119
+ $state=1; //if 1 do not do image
120
$mageRow=$this->_getRowByCode($row['REFERENCE']);
121
}
122
}else{
123
$updateNeeded=true;
124
+ $state=2; //if 2 also create image
125
$mageRow=Mage::getModel('unicentaopos/unicentaoposproduct');
126
}
127
+
128
if ($updateNeeded){
129
$mageRow->setName($row['NAME']);
130
$mageRow->setSku($row['REFERENCE']);
133
$mageRow->setCost($row['PRICEBUY']);
134
$mageRow->setPrice($row['PRICESELL']);
135
$mageRow->setStock($row['STOCKVOLUME']);
136
+ $mageRow->setImage($row['IMAGE']);
137
+ $mageRow->setInfoupdated($state);
138
$mageRow->save();
139
}
140
}
201
}
202
203
private function _updateUnicentaStock(){
204
+ $loc=Mage::getStoreConfig('asulpuntounicentaopos/tools/location');
205
$col=Mage::getModel('unicentaopos/unicentaoposorderitem')->getCollection()->addFilter('stockupdated',1);
206
+
207
try{
208
$db=Mage::Helper('unicentaopos')->getUnicentaOposConnection();
209
foreach($col as $item){
210
+ $sql="UPDATE `STOCKCURRENT` set UNITS=UNITS-{$item->getQuantity()} where PRODUCT=(SELECT ID FROM PRODUCTS WHERE REFERENCE='{$item->getSku()}') and location='$loc'";
211
$res=$db->query($sql);
212
$item->setStockupdated(0);
213
$item->save();
229
}
230
231
public function updateMagentoProducts(){
232
+ $col=Mage::getModel('unicentaopos/unicentaoposproduct')->getCollection()->addFieldToFilter('infoupdated',array('in' => array('1', '2')));
233
foreach ($col as $row){
234
$this->_saveMagentoProduct($row);
235
}
261
private function _saveMagentoProduct($row){
262
try
263
{
264
+ $ptype=$this->getProductType();
265
$newProduct=false;
266
$product = Mage::getModel('catalog/product');
267
if ($row->getMagentoProductId()){
271
if (!$product->getId()){
272
$product->setSku($row->getSku());
273
$product->setTypeId('simple');
274
+ $product->setAttributeSetId($ptype);
275
$product->setTaxClassId(1);
276
$product->setWeight(0.0);
277
$sData['qty']=$row->getStock();
288
$sData=$product->getStockData($sData);
289
$product->setCostPrice($row->getCost());
290
$product->setPrice($row->getPrice());
291
+ if ($row->getInfoupdated()==2) $product=Mage::getModel('unicentaopos/unicentaoposproductapi')->setProductImage($row->getImage(),$product);
292
$product->save();
293
294
if ($newProduct) Mage::getModel('catalog/product_status')->updateProductStatus($product->getId(), 0, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
295
+ if ($row->getInfoupdated()==2) Mage::getModel('unicentaopos/unicentaoposproductapi')->setProductImage($row->getImage(),$product);
296
$row->setInfoupdated(0);
297
$row->setMagentoProductId($product->getId());
298
$row->save();
302
{
303
Mage::log(__METHOD__.$e->getMessage(),null,"asulpunto_unicentaopos.log");
304
}
305
+ unset($row);
306
return 0;
307
}
308
328
unset($cols);
329
}
330
331
+ private function getProductType(){
332
+ return Mage::getStoreConfig('asulpuntounicentaopos/tools/product_type');
333
+ }
334
+
335
+ public function getLocations(){
336
+ try{
337
+ $ARR=array();
338
+ $rows=Mage::Helper('unicentaopos')->doQuery("select * from `LOCATIONS`");
339
+ if (!is_null($rows)){
340
+ foreach ($rows as $row){
341
+ $ARR[$row['ID']]=$row['NAME'];
342
+ }
343
+ }
344
+ }catch(Exception $e){
345
+ Mage::log(__METHOD__.$e->getMessage(),null,"asulpunto_unicentaopos.log");
346
+ }
347
+ return $ARR;
348
+ }
349
+
350
351
}
app/code/community/Asulpunto/Unicentaopos/Model/Unicentaoposproductapi.php ADDED
@@ -0,0 +1,58 @@
1
+ <?php
2
+ /**
3
+ * Magento - Unicenta Opos Integrator by Asulpunto
4
+ *
5
+ * NOTICE OF LICENSE
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation, Version 3 of the License. You can view
9
+ * the license here http://opensource.org/licenses/GPL-3.0
10
+
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * @category Asulpunto
17
+ * @package Asulpunto_Unicentaopos
18
+ * @copyright Copyright (c) 2013 Asulpunto (http://www.asulpunto.com)
19
+ * @license http://opensource.org/licenses/GPL-3.0 GNU General Public License, version 3 (GPL-3.0)
20
+ *
21
+ */
22
+
23
+ class Asulpunto_Unicentaopos_Model_Unicentaoposproductapi extends Mage_Core_Model_Abstract
24
+ {
25
+ private $_imageFolder='';
26
+
27
+ public function setProductImage($image,$product){
28
+ if (empty($image)) return $product;
29
+
30
+ $col=$product->getMediaGalleryImages();
31
+ if (!is_null($col) && $col->getSize()>0) return $product; //We do not overwrite images. Never.
32
+ $name=trim($product->getSku());
33
+ $imageFolder=$this->getImageFolder();
34
+ $path=$imageFolder.DIRECTORY_SEPARATOR.$name.'.png';
35
+ $res=file_put_contents($path,$image);
36
+ if ($res===false){
37
+ Mage::log(__METHOD__."Cannot create image for $name in folder: $imageFolder ",null,"asulpunto_unicentaopos.log");
38
+ }else{
39
+ $product->addImageToMediaGallery($path, array('thumbnail','small_image','image'),true,false);
40
+ }
41
+ unset($image);
42
+ return $product;
43
+ }
44
+
45
+ private function getImageFolder(){
46
+ if (empty($this->_imageFolder)){
47
+ $media=Mage::getBaseDir('media');
48
+ $unicenta=$media.DIRECTORY_SEPARATOR.'unicenta';
49
+ if (!file_exists($unicenta)){
50
+ $res=mkdir($unicenta,0777);
51
+ if (!$res) $this->_imageFolder=Mage::getBaseDir('media');
52
+ }
53
+ $this->_imageFolder=$unicenta;
54
+ }
55
+ return $this->_imageFolder;
56
+ }
57
+
58
+ }
app/code/community/Asulpunto/Unicentaopos/etc/config.xml CHANGED
@@ -25,7 +25,7 @@
25
<config>
26
<modules>
27
<Asulpunto_Unicentaopos>
28
- <version>0.0.4</version>
29
</Asulpunto_Unicentaopos>
30
</modules>
31
<global>
@@ -119,6 +119,7 @@
119
<asulpuntounicentaopos>
120
<tools>
121
<orderstatus>complete</orderstatus>
122
</tools>
123
</asulpuntounicentaopos>
124
</default>
25
<config>
26
<modules>
27
<Asulpunto_Unicentaopos>
28
+ <version>0.0.5</version>
29
</Asulpunto_Unicentaopos>
30
</modules>
31
<global>
119
<asulpuntounicentaopos>
120
<tools>
121
<orderstatus>complete</orderstatus>
122
+ <product_type>9</product_type>
123
</tools>
124
</asulpuntounicentaopos>
125
</default>
app/code/community/Asulpunto/Unicentaopos/etc/system.xml CHANGED
@@ -122,6 +122,26 @@
122
<show_in_website>0</show_in_website>
123
<show_in_store>0</show_in_store>
124
</orderstatus>
125
</fields>
126
127
</tools>
@@ -139,7 +159,9 @@
139
<show_in_default>1</show_in_default>
140
<show_in_website>0</show_in_website>
141
<show_in_store>0</show_in_store>
142
</orderno>
143
</fields>
144
</advanced>
145
</groups>
122
<show_in_website>0</show_in_website>
123
<show_in_store>0</show_in_store>
124
</orderstatus>
125
+ <product_type translate="label">
126
+ <label>Default Product Attribute Set</label>
127
+ <frontend_type>select</frontend_type>
128
+ <source_model>unicentaopos/source_producttypelist</source_model>
129
+ <sort_order>20</sort_order>
130
+ <show_in_default>1</show_in_default>
131
+ <show_in_website>0</show_in_website>
132
+ <show_in_store>0</show_in_store>
133
+ <comment>New products will be created in this Product Attribute Set when uniCenta oPOS creates them in Magento</comment>
134
+ </product_type>
135
+ <location translate="label">
136
+ <label>Stock location</label>
137
+ <frontend_type>select</frontend_type>
138
+ <source_model>unicentaopos/source_location</source_model>
139
+ <sort_order>20</sort_order>
140
+ <show_in_default>1</show_in_default>
141
+ <show_in_website>0</show_in_website>
142
+ <show_in_store>0</show_in_store>
143
+ <comment>New products will be created in this Product Attribute Set when uniCenta oPOS creates them in Magento</comment>
144
+ </location>
145
</fields>
146
147
</tools>
159
<show_in_default>1</show_in_default>
160
<show_in_website>0</show_in_website>
161
<show_in_store>0</show_in_store>
162
+ <comment>This order and any orders done before it will not update uniCenta oPOS stock diary.</comment>
163
</orderno>
164
+
165
</fields>
166
</advanced>
167
</groups>
app/code/community/Asulpunto/Unicentaopos/sql/unicentaopos_setup/mysql4-upgrade-0.0.4-0.0.5.php ADDED
@@ -0,0 +1,26 @@
1
+ <?php
2
+ /**
3
+ * Magento - Unicenta Opos Integrator by Asulpunto
4
+ *
5
+ * NOTICE OF LICENSE
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation, Version 3 of the License. You can view
9
+ * the license here http://opensource.org/licenses/GPL-3.0
10
+
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * @category Asulpunto
17
+ * @package Asulpunto_Unicentaopos
18
+ * @copyright Copyright (c) 2013 Asulpunto (http://www.asulpunto.com)
19
+ * @license http://opensource.org/licenses/GPL-3.0 GNU General Public License, version 3 (GPL-3.0)
20
+ *
21
+ */
22
+
23
+ $installer = $this;
24
+ $installer->startSetup();
25
+ $installer->run("ALTER TABLE {$installer->getTable('unicentaopos/unicentaoposproduct')} ADD COLUMN `image` MEDIUMBLOB NULL AFTER `data`");
26
+ $installer->endSetup();
package.xml CHANGED
@@ -1,7 +1,7 @@
1
<?xml version="1.0"?>
2
<package>
3
<name>Asulpunto_Unicentaopos</name>
4
- <version>0.0.4</version>
5
<stability>stable</stability>
6
<license uri="http://opensource.org/licenses/GPL-3.0">GNU General Public License 3.0</license>
7
<channel>community</channel>
@@ -19,15 +19,20 @@ Features:&#xD;
19
To use this extension you have to install uniCenta oPOS's database on a Mysql server accessible by the Magento server.&#xD;
20
&#xD;
21
</description>
22
- <notes>0.0.4&#xD;
23
Advanced log to identify database connection issues&#xD;
24
&#xD;
25
0.0.3&#xD;
26
First official public release </notes>
27
<authors><author><name>asulpunto</name><user>asulpunto</user><email>asulpunto@asulpunto.com</email></author></authors>
28
- <date>2013-09-27</date>
29
- <time>16:56:03</time>
30
- <contents><target name="magecommunity"><dir name="Asulpunto"><dir name="Unicentaopos"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><file name="Button.php" hash="ee172a1ea50cd3f75cf819ba40aa2ac3"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="be527e82077d4e3fb91e0509e3e9eaec"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Unicentaoposorderitem"><file name="Collection.php" hash="bb9cf8ab48304c34fd7bd575e1002574"/></dir><file name="Unicentaoposorderitem.php" hash="edc7cfecd2b60b0bc372da8c0509cf7d"/><dir name="Unicentaoposproduct"><file name="Collection.php" hash="03f65e284b426d36daa2376e38a813e1"/></dir><file name="Unicentaoposproduct.php" hash="1f849c04da97b863ee88c3b34dc8255b"/></dir><file name="Unicentaoposapi.php" hash="3a24379f0984dd3af1f3b509bd7409b9"/><file name="Unicentaoposorderitem.php" hash="31b0f22a1fa3af396a01b741fd9d4adf"/><file name="Unicentaoposproduct.php" hash="8754d16acf3372355bf379deb563ab03"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="UnicentaoposController.php" hash="7da0f12f269dfdc16ef1f8881753d5fa"/></dir></dir><dir name="etc"><file name="config.xml" hash="c3ae12d95c4d1f39d784ee6b3e4e58df"/><file name="system.xml" hash="14b9b9206e187554a17492f974f47305"/></dir><dir name="sql"><dir name="unicentaopos_setup"><file name="mysql4-install-0.0.1.php" hash="84ba3c4373b2a1c6b1219e8fbd881b51"/><file name="mysql4-upgrade-0.0.1-0.0.2.php" hash="76ea73b06b500e88db0891df95744b65"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="asulpunto"><dir name="unicentaopos"><dir name="system"><dir name="config"><file name="button.phtml" hash="023c9f40cee588b3e3ad51728a8b9865"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Asulpunto_Unicentaopos.xml" hash="0b81c393d2739bbabe04eeccadeaf858"/></dir></target></contents>
31
<compatible/>
32
<dependencies><required><php><min>5.2.0</min><max>5.5.0</max></php></required></dependencies>
33
</package>
1
<?xml version="1.0"?>
2
<package>
3
<name>Asulpunto_Unicentaopos</name>
4
+ <version>0.0.5</version>
5
<stability>stable</stability>
6
<license uri="http://opensource.org/licenses/GPL-3.0">GNU General Public License 3.0</license>
7
<channel>community</channel>
19
To use this extension you have to install uniCenta oPOS's database on a Mysql server accessible by the Magento server.&#xD;
20
&#xD;
21
</description>
22
+ <notes>0.0.5&#xD;
23
+ * Product set can be configured from Admin. This also solves a problem when Magento's default attribute set was deleted.&#xD;
24
+ * The warehouse that will track the stock can be selected from admin configuration.&#xD;
25
+ * Images on Unicenta are tranfered to Magento when the Magento Product does not have any images. &#xD;
26
+ &#xD;
27
+ 0.0.4&#xD;
28
Advanced log to identify database connection issues&#xD;
29
&#xD;
30
0.0.3&#xD;
31
First official public release </notes>
32
<authors><author><name>asulpunto</name><user>asulpunto</user><email>asulpunto@asulpunto.com</email></author></authors>
33
+ <date>2013-10-20</date>
34
+ <time>16:44:01</time>
35
+ <contents><target name="magecommunity"><dir name="Asulpunto"><dir name="Unicentaopos"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><file name="Button.php" hash="ee172a1ea50cd3f75cf819ba40aa2ac3"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="81fac45bfd866818d44d00cc12d7b657"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Unicentaoposorderitem"><file name="Collection.php" hash="bb9cf8ab48304c34fd7bd575e1002574"/></dir><file name="Unicentaoposorderitem.php" hash="edc7cfecd2b60b0bc372da8c0509cf7d"/><dir name="Unicentaoposproduct"><file name="Collection.php" hash="03f65e284b426d36daa2376e38a813e1"/></dir><file name="Unicentaoposproduct.php" hash="1f849c04da97b863ee88c3b34dc8255b"/></dir><dir name="Source"><file name="Location.php" hash="231c61909cef275342fe746e6b1a3406"/><file name="Producttypelist.php" hash="ee920c29a4c36e5d39503d049729c206"/></dir><file name="Unicentaoposapi.php" hash="913169072b0c0b8a610c526527e044f1"/><file name="Unicentaoposorderitem.php" hash="31b0f22a1fa3af396a01b741fd9d4adf"/><file name="Unicentaoposproduct.php" hash="8754d16acf3372355bf379deb563ab03"/><file name="Unicentaoposproductapi.php" hash="61949d0060a34e3f91c6ddd55d2428ab"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="UnicentaoposController.php" hash="7da0f12f269dfdc16ef1f8881753d5fa"/></dir></dir><dir name="etc"><file name="config.xml" hash="d1e4e03c1ce228cd9af2af12ac985315"/><file name="system.xml" hash="728f6378863496c25f860702a5881ec0"/></dir><dir name="sql"><dir name="unicentaopos_setup"><file name="mysql4-install-0.0.1.php" hash="84ba3c4373b2a1c6b1219e8fbd881b51"/><file name="mysql4-upgrade-0.0.1-0.0.2.php" hash="76ea73b06b500e88db0891df95744b65"/><file name="mysql4-upgrade-0.0.4-0.0.5.php" hash="666324a87a44f9e4f161bbea4f4c8c06"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="asulpunto"><dir name="unicentaopos"><dir name="system"><dir name="config"><file name="button.phtml" hash="023c9f40cee588b3e3ad51728a8b9865"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Asulpunto_Unicentaopos.xml" hash="0b81c393d2739bbabe04eeccadeaf858"/></dir></target></contents>
36
<compatible/>
37
<dependencies><required><php><min>5.2.0</min><max>5.5.0</max></php></required></dependencies>
38
</package>