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>