Version Notes
Download this release
Release Info
Developer | Codisto |
Extension | codistoconnect |
Version | 1.90.9 |
Comparing to | |
See all releases |
Code changes from version 1.90.7 to 1.90.9
- app/code/community/Codisto/Sync/Model/Sync.php +99 -45
- app/code/community/Codisto/Sync/controllers/CodistoController.php +7 -0
- app/code/community/Codisto/Sync/controllers/IndexController.php +77 -54
- app/code/community/Codisto/Sync/controllers/SyncController.php +2 -0
- app/code/community/Codisto/Sync/data/codisto_setup/{data-install-1.90.7.php → data-install-1.90.9.php} +0 -0
- app/code/community/Codisto/Sync/etc/adminhtml.xml +11 -2
- app/code/community/Codisto/Sync/etc/config.xml +1 -1
- app/code/community/Codisto/Sync/sql/codisto_setup/{mysql4-install-1.90.7.php → mysql4-install-1.90.9.php} +0 -0
- package.xml +1 -1
app/code/community/Codisto/Sync/Model/Sync.php
CHANGED
@@ -285,14 +285,12 @@ class Codisto_Sync_Model_Sync
|
|
285 |
$insertSKULink = $db->prepare('INSERT OR REPLACE INTO SKULink (SKUExternalReference, ProductExternalReference, Price) VALUES (?, ?, ?)');
|
286 |
$insertSKUMatrix = $db->prepare('INSERT INTO SKUMatrix(SKUExternalReference, ProductExternalReference, Code, OptionName, OptionValue, ProductOptionExternalReference, ProductOptionValueExternalReference) VALUES(?,?,?,?,?,?,?)');
|
287 |
$insertImage = $db->prepare('INSERT INTO ProductImage(ProductExternalReference, URL, Tag, Sequence, Enabled) VALUES(?,?,?,?,?)');
|
288 |
-
$insertProductOptionValue = $db->prepare('INSERT INTO ProductOptionValue (ExternalReference, Sequence) VALUES (?,?)');
|
289 |
$insertProductHTML = $db->prepare('INSERT OR IGNORE INTO ProductHTML(ProductExternalReference, Tag, HTML) VALUES (?, ?, ?)');
|
290 |
-
$
|
291 |
$insertAttribute = $db->prepare('INSERT OR REPLACE INTO Attribute(ID, Code, Label, Type, Input) VALUES (?, ?, ?, ?, ?)');
|
292 |
$insertAttributeGroup = $db->prepare('INSERT OR IGNORE INTO AttributeGroup(ID, Name) VALUES(?, ?)');
|
293 |
$insertAttributeGroupMap = $db->prepare('INSERT OR IGNORE INTO AttributeGroupMap(GroupID, AttributeID) VALUES(?,?)');
|
294 |
$insertProductAttribute = $db->prepare('INSERT OR IGNORE INTO ProductAttributeValue(ProductExternalReference, AttributeID, Value) VALUES (?, ?, ?)');
|
295 |
-
$clearProductQuestion = $db->prepare('DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference = ?1); DELETE FROM ProductQuestion WHERE ProductExternalReference = ?1');
|
296 |
$insertProductQuestion = $db->prepare('INSERT OR REPLACE INTO ProductQuestion(ExternalReference, ProductExternalReference, Name, Type, Sequence) VALUES (?, ?, ?, ?, ?)');
|
297 |
$insertProductAnswer = $db->prepare('INSERT INTO ProductQuestionAnswer(ProductQuestionExternalReference, Value, PriceModifier, SKUModifier, Sequence) VALUES (?, ?, ?, ?, ?)');
|
298 |
|
@@ -324,16 +322,28 @@ class Codisto_Sync_Model_Sync
|
|
324 |
$simpleProducts->getSelect()
|
325 |
->columns(array('codisto_in_store'=> new Zend_Db_Expr('CASE WHEN `e`.entity_id IN (SELECT product_id FROM `'.$catalogWebsiteName.'` WHERE website_id IN (SELECT website_id FROM `'.$storeName.'` WHERE store_id = '.$storeId.' OR EXISTS(SELECT 1 FROM `'.$storeName.'` WHERE store_id = '.$storeId.' AND website_id = 0))) THEN -1 ELSE 0 END')));
|
326 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
327 |
$db->exec('BEGIN EXCLUSIVE TRANSACTION');
|
328 |
|
329 |
$db->exec('DELETE FROM Product WHERE ExternalReference IN ('.implode(',', $ids).')');
|
330 |
$db->exec('DELETE FROM ProductImage WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
331 |
$db->exec('DELETE FROM ProductHTML WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
|
|
|
|
|
|
|
|
332 |
$db->exec('DELETE FROM SKUMatrix WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
333 |
$db->exec('DELETE FROM SKULink WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
334 |
$db->exec('DELETE FROM SKU WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
335 |
-
$db->exec('DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $ids).'))');
|
336 |
-
$db->exec('DELETE FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
337 |
$db->exec('DELETE FROM CategoryProduct WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
338 |
|
339 |
Mage::getSingleton('core/resource_iterator')->walk($configurableProducts->getSelect(), array(array($this, 'SyncConfigurableProductData')),
|
@@ -347,14 +357,12 @@ class Codisto_Sync_Model_Sync
|
|
347 |
'preparedskumatrixStatement' => $insertSKUMatrix,
|
348 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
349 |
'preparedimageStatement' => $insertImage,
|
350 |
-
'preparedproductoptionvalueStatement' => $insertProductOptionValue,
|
351 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
352 |
-
'
|
353 |
'preparedattributeStatement' => $insertAttribute,
|
354 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
355 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
356 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
357 |
-
'preparedclearproductquestionStatement' => $clearProductQuestion,
|
358 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
359 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
360 |
'store' => $store )
|
@@ -369,17 +377,40 @@ class Codisto_Sync_Model_Sync
|
|
369 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
370 |
'preparedimageStatement' => $insertImage,
|
371 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
372 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
'preparedattributeStatement' => $insertAttribute,
|
374 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
375 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
376 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
377 |
-
'preparedclearproductquestionStatement' => $clearProductQuestion,
|
378 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
379 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
380 |
'store' => $store )
|
381 |
);
|
382 |
|
|
|
|
|
383 |
$insertProductOptionValue = $db->prepare('INSERT INTO ProductOptionValue (ExternalReference, Sequence) VALUES (?,?)');
|
384 |
|
385 |
$options = Mage::getResourceModel('eav/entity_attribute_option_collection')
|
@@ -401,22 +432,30 @@ class Codisto_Sync_Model_Sync
|
|
401 |
|
402 |
$db->exec('BEGIN EXCLUSIVE TRANSACTION');
|
403 |
|
|
|
|
|
404 |
if(!is_array($ids))
|
405 |
{
|
406 |
$ids = array($ids);
|
407 |
}
|
408 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
foreach($ids as $id)
|
410 |
{
|
411 |
-
$db->exec(
|
412 |
-
'INSERT OR IGNORE INTO ProductDelete VALUES('.$id.');'.
|
413 |
-
'DELETE FROM Product WHERE ExternalReference = '.$id.';'.
|
414 |
-
'DELETE FROM ProductImage WHERE ProductExternalReference = '.$id.';'.
|
415 |
-
'DELETE FROM ProductHTML WHERE ProductExternalReference = '.$id.';'.
|
416 |
-
'DELETE FROM SKULink WHERE ProductExternalReference = '.$id.';'.
|
417 |
-
'DELETE FROM SKUMatrix WHERE ProductExternalReference = '.$id.';'.
|
418 |
-
'DELETE FROM SKU WHERE ProductExternalReference = '.$id.';'.
|
419 |
-
'DELETE FROM CategoryProduct WHERE ProductExternalReference = '.$id);
|
420 |
}
|
421 |
|
422 |
$db->exec('COMMIT TRANSACTION');
|
@@ -768,12 +807,11 @@ class Codisto_Sync_Model_Sync
|
|
768 |
$insertCategorySQL = $args['preparedcategoryproductStatement'];
|
769 |
$insertImageSQL = $args['preparedimageStatement'];
|
770 |
$insertHTMLSQL = $args['preparedproducthtmlStatement'];
|
771 |
-
$
|
772 |
$insertAttributeSQL = $args['preparedattributeStatement'];
|
773 |
$insertAttributeGroupSQL = $args['preparedattributegroupStatement'];
|
774 |
$insertAttributeGroupMapSQL = $args['preparedattributegroupmapStatement'];
|
775 |
$insertProductAttributeSQL = $args['preparedproductattributeStatement'];
|
776 |
-
$clearProductQuestionSQL = $args['preparedclearproductquestionStatement'];
|
777 |
$insertProductQuestionSQL = $args['preparedproductquestionStatement'];
|
778 |
$insertProductAnswerSQL = $args['preparedproductanswerStatement'];
|
779 |
|
@@ -859,8 +897,6 @@ class Codisto_Sync_Model_Sync
|
|
859 |
$insertHTMLSQL->execute(array($product_id, 'Short Description', $shortDescription));
|
860 |
}
|
861 |
|
862 |
-
$clearAttributeSQL->execute(array($product_id));
|
863 |
-
|
864 |
$attributeSet = array();
|
865 |
$attributeCodes = array();
|
866 |
$attributeTypes = array();
|
@@ -1252,9 +1288,14 @@ class Codisto_Sync_Model_Sync
|
|
1252 |
}
|
1253 |
}
|
1254 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1255 |
|
1256 |
// process simple product question/answers
|
1257 |
-
$clearProductQuestionSQL->execute(array($product_id));
|
1258 |
|
1259 |
$options = $product->getProductOptionsCollection();
|
1260 |
|
@@ -1432,6 +1473,10 @@ class Codisto_Sync_Model_Sync
|
|
1432 |
'DELETE FROM Product WHERE ExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1433 |
'DELETE FROM ProductImage WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1434 |
'DELETE FROM ProductHTML WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
|
|
|
|
|
|
|
|
1435 |
'DELETE FROM SKULink WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1436 |
'DELETE FROM SKUMatrix WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1437 |
'DELETE FROM SKU WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
@@ -1445,20 +1490,18 @@ class Codisto_Sync_Model_Sync
|
|
1445 |
$insertSKULink = $db->prepare('INSERT OR REPLACE INTO SKULink (SKUExternalReference, ProductExternalReference, Price) VALUES (?, ?, ?)');
|
1446 |
$insertSKUMatrix = $db->prepare('INSERT INTO SKUMatrix(SKUExternalReference, ProductExternalReference, Code, OptionName, OptionValue, ProductOptionExternalReference, ProductOptionValueExternalReference) VALUES(?,?,?,?,?,?,?)');
|
1447 |
$insertImage = $db->prepare('INSERT INTO ProductImage(ProductExternalReference, URL, Tag, Sequence, Enabled) VALUES(?,?,?,?,?)');
|
1448 |
-
$insertProductOptionValue = $db->prepare('INSERT INTO ProductOptionValue (ExternalReference, Sequence) VALUES (?,?)');
|
1449 |
$insertProductHTML = $db->prepare('INSERT OR IGNORE INTO ProductHTML(ProductExternalReference, Tag, HTML) VALUES (?, ?, ?)');
|
1450 |
-
$
|
1451 |
$insertAttribute = $db->prepare('INSERT OR REPLACE INTO Attribute(ID, Code, Label, Type, Input) VALUES (?, ?, ?, ?, ?)');
|
1452 |
$insertAttributeGroup = $db->prepare('INSERT OR REPLACE INTO AttributeGroup(ID, Name) VALUES(?, ?)');
|
1453 |
$insertAttributeGroupMap = $db->prepare('INSERT OR IGNORE INTO AttributeGroupMap(GroupID, AttributeID) VALUES(?,?)');
|
1454 |
$insertProductAttribute = $db->prepare('INSERT OR IGNORE INTO ProductAttributeValue(ProductExternalReference, AttributeID, Value) VALUES (?, ?, ?)');
|
1455 |
-
$clearProductQuestion = $db->prepare('DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference = ?1); DELETE FROM ProductQuestion WHERE ProductExternalReference = ?1');
|
1456 |
$insertProductQuestion = $db->prepare('INSERT OR REPLACE INTO ProductQuestion(ExternalReference, ProductExternalReference, Name, Type, Sequence) VALUES (?, ?, ?, ?, ?)');
|
1457 |
$insertProductAnswer = $db->prepare('INSERT INTO ProductQuestionAnswer(ProductQuestionExternalReference, Value, PriceModifier, SKUModifier, Sequence) VALUES (?, ?, ?, ?, ?)');
|
1458 |
|
1459 |
// Simple Products not participating as configurable skus
|
1460 |
$simpleProducts = $this->getProductCollection()
|
1461 |
-
->addAttributeToSelect(
|
1462 |
->addAttributeToFilter('type_id', array('eq' => 'simple'))
|
1463 |
->addAttributeToFilter('entity_id', array('in' => $productUpdateIds) );
|
1464 |
$simpleProducts->getSelect()
|
@@ -1469,22 +1512,22 @@ class Codisto_Sync_Model_Sync
|
|
1469 |
'type' => 'simple',
|
1470 |
'db' => $db,
|
1471 |
'preparedStatement' => $insertProduct,
|
|
|
1472 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1473 |
'preparedimageStatement' => $insertImage,
|
1474 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1475 |
-
'
|
1476 |
'preparedattributeStatement' => $insertAttribute,
|
1477 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1478 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1479 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
1480 |
-
'preparedclearproductquestionStatement' => $clearProductQuestion,
|
1481 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1482 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1483 |
'store' => $storeObject ));
|
1484 |
|
1485 |
// Configurable products
|
1486 |
$configurableProducts = $this->getProductCollection()
|
1487 |
-
->addAttributeToSelect(
|
1488 |
->addAttributeToFilter('type_id', array('eq' => 'configurable'))
|
1489 |
->addAttributeToFilter('entity_id', array('in' => $productUpdateIds));
|
1490 |
$configurableProducts->getSelect()
|
@@ -1495,18 +1538,18 @@ class Codisto_Sync_Model_Sync
|
|
1495 |
'type' => 'configurable',
|
1496 |
'db' => $db,
|
1497 |
'preparedStatement' => $insertProduct,
|
|
|
1498 |
'preparedskuStatement' => $insertSKU,
|
1499 |
'preparedskulinkStatement' => $insertSKULink,
|
1500 |
'preparedskumatrixStatement' => $insertSKUMatrix,
|
1501 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1502 |
'preparedimageStatement' => $insertImage,
|
1503 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1504 |
-
'
|
1505 |
'preparedattributeStatement' => $insertAttribute,
|
1506 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1507 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1508 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
1509 |
-
'preparedclearproductquestionStatement' => $clearProductQuestion,
|
1510 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1511 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1512 |
'store' => $storeObject )
|
@@ -1514,7 +1557,7 @@ class Codisto_Sync_Model_Sync
|
|
1514 |
|
1515 |
// Grouped products
|
1516 |
$groupedProducts = $this->getProductCollection()
|
1517 |
-
->addAttributeToSelect(
|
1518 |
->addAttributeToFilter('type_id', array('eq' => 'grouped'))
|
1519 |
->addAttributeToFilter('entity_id', array('in' => $productUpdateIds ));
|
1520 |
|
@@ -1526,18 +1569,18 @@ class Codisto_Sync_Model_Sync
|
|
1526 |
'type' => 'grouped',
|
1527 |
'db' => $db,
|
1528 |
'preparedStatement' => $insertProduct,
|
|
|
1529 |
'preparedskuStatement' => $insertSKU,
|
1530 |
'preparedskulinkStatement' => $insertSKULink,
|
1531 |
'preparedskumatrixStatement' => $insertSKUMatrix,
|
1532 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1533 |
'preparedimageStatement' => $insertImage,
|
1534 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1535 |
-
'
|
1536 |
'preparedattributeStatement' => $insertAttribute,
|
1537 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1538 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1539 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
1540 |
-
'preparedclearproductquestionStatement' => $clearProductQuestion,
|
1541 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1542 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1543 |
'store' => $storeObject )
|
@@ -1622,6 +1665,20 @@ class Codisto_Sync_Model_Sync
|
|
1622 |
{
|
1623 |
$db->exec('INSERT OR REPLACE INTO ProductChange (ExternalReference) VALUES ('.$updateId.')');
|
1624 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1625 |
}
|
1626 |
|
1627 |
if(!empty($categoryUpdateIds))
|
@@ -1777,14 +1834,12 @@ class Codisto_Sync_Model_Sync
|
|
1777 |
$insertSKULink = $db->prepare('INSERT OR REPLACE INTO SKULink (SKUExternalReference, ProductExternalReference, Price) VALUES (?, ?, ?)');
|
1778 |
$insertSKUMatrix = $db->prepare('INSERT INTO SKUMatrix(SKUExternalReference, ProductExternalReference, Code, OptionName, OptionValue, ProductOptionExternalReference, ProductOptionValueExternalReference) VALUES(?,?,?,?,?,?,?)');
|
1779 |
$insertImage = $db->prepare('INSERT INTO ProductImage(ProductExternalReference, URL, Tag, Sequence, Enabled) VALUES(?,?,?,?,?)');
|
1780 |
-
$insertProductOptionValue = $db->prepare('INSERT INTO ProductOptionValue (ExternalReference, Sequence) VALUES (?,?)');
|
1781 |
$insertProductHTML = $db->prepare('INSERT OR IGNORE INTO ProductHTML(ProductExternalReference, Tag, HTML) VALUES (?, ?, ?)');
|
1782 |
-
$
|
1783 |
$insertAttribute = $db->prepare('INSERT OR REPLACE INTO Attribute(ID, Code, Label, Type, Input) VALUES (?, ?, ?, ?, ?)');
|
1784 |
$insertAttributeGroup = $db->prepare('INSERT OR REPLACE INTO AttributeGroup(ID, Name) VALUES(?, ?)');
|
1785 |
$insertAttributeGroupMap = $db->prepare('INSERT OR IGNORE INTO AttributeGroupMap(GroupID, AttributeID) VALUES(?,?)');
|
1786 |
$insertProductAttribute = $db->prepare('INSERT OR IGNORE INTO ProductAttributeValue(ProductExternalReference, AttributeID, Value) VALUES (?, ?, ?)');
|
1787 |
-
$clearProductQuestion = $db->prepare('DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference = ?1); DELETE FROM ProductQuestion WHERE ProductExternalReference = ?1');
|
1788 |
$insertProductQuestion = $db->prepare('INSERT OR REPLACE INTO ProductQuestion(ExternalReference, ProductExternalReference, Name, Type, Sequence) VALUES (?, ?, ?, ?, ?)');
|
1789 |
$insertProductAnswer = $db->prepare('INSERT INTO ProductQuestionAnswer(ProductQuestionExternalReference, Value, PriceModifier, SKUModifier, Sequence) VALUES (?, ?, ?, ?, ?)');
|
1790 |
$insertOrders = $db->prepare('INSERT OR REPLACE INTO [Order] (ID, Status, PaymentDate, ShipmentDate, Carrier, TrackingNumber) VALUES (?, ?, ?, ?, ?, ?)');
|
@@ -1895,12 +1950,11 @@ class Codisto_Sync_Model_Sync
|
|
1895 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1896 |
'preparedimageStatement' => $insertImage,
|
1897 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1898 |
-
'
|
1899 |
'preparedattributeStatement' => $insertAttribute,
|
1900 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1901 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1902 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
1903 |
-
'preparedclearproductquestionStatement' => $clearProductQuestion,
|
1904 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1905 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1906 |
'store' => $store ));
|
@@ -1942,12 +1996,11 @@ class Codisto_Sync_Model_Sync
|
|
1942 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1943 |
'preparedimageStatement' => $insertImage,
|
1944 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1945 |
-
'
|
1946 |
'preparedattributeStatement' => $insertAttribute,
|
1947 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1948 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1949 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
1950 |
-
'preparedclearproductquestionStatement' => $clearProductQuestion,
|
1951 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1952 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1953 |
'store' => $store )
|
@@ -1990,12 +2043,11 @@ class Codisto_Sync_Model_Sync
|
|
1990 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1991 |
'preparedimageStatement' => $insertImage,
|
1992 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1993 |
-
'
|
1994 |
'preparedattributeStatement' => $insertAttribute,
|
1995 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1996 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1997 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
1998 |
-
'preparedclearproductquestionStatement' => $clearProductQuestion,
|
1999 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
2000 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
2001 |
'store' => $store )
|
@@ -2437,6 +2489,8 @@ class Codisto_Sync_Model_Sync
|
|
2437 |
$db->exec('CREATE TABLE IF NOT EXISTS ProductHTML (ProductExternalReference text NOT NULL, Tag text NOT NULL, HTML text NOT NULL, PRIMARY KEY (ProductExternalReference, Tag))');
|
2438 |
$db->exec('CREATE INDEX IF NOT EXISTS IX_ProductHTML_ProductExternalReference ON ProductHTML(ProductExternalReference)');
|
2439 |
|
|
|
|
|
2440 |
$db->exec('CREATE TABLE IF NOT EXISTS Attribute (ID integer NOT NULL PRIMARY KEY, Code text NOT NULL, Label text NOT NULL, Type text NOT NULL, Input text NOT NULL)');
|
2441 |
$db->exec('CREATE TABLE IF NOT EXISTS AttributeGroupMap (AttributeID integer NOT NULL, GroupID integer NOT NULL, PRIMARY KEY(AttributeID, GroupID))');
|
2442 |
$db->exec('CREATE TABLE IF NOT EXISTS AttributeGroup (ID integer NOT NULL PRIMARY KEY, Name text NOT NULL)');
|
285 |
$insertSKULink = $db->prepare('INSERT OR REPLACE INTO SKULink (SKUExternalReference, ProductExternalReference, Price) VALUES (?, ?, ?)');
|
286 |
$insertSKUMatrix = $db->prepare('INSERT INTO SKUMatrix(SKUExternalReference, ProductExternalReference, Code, OptionName, OptionValue, ProductOptionExternalReference, ProductOptionValueExternalReference) VALUES(?,?,?,?,?,?,?)');
|
287 |
$insertImage = $db->prepare('INSERT INTO ProductImage(ProductExternalReference, URL, Tag, Sequence, Enabled) VALUES(?,?,?,?,?)');
|
|
|
288 |
$insertProductHTML = $db->prepare('INSERT OR IGNORE INTO ProductHTML(ProductExternalReference, Tag, HTML) VALUES (?, ?, ?)');
|
289 |
+
$insertProductRelated = $db->prepare('INSERT OR IGNORE INTO ProductRelated (RelatedProductExternalReference, ProductExternalReference) VALUES (?, ?)');
|
290 |
$insertAttribute = $db->prepare('INSERT OR REPLACE INTO Attribute(ID, Code, Label, Type, Input) VALUES (?, ?, ?, ?, ?)');
|
291 |
$insertAttributeGroup = $db->prepare('INSERT OR IGNORE INTO AttributeGroup(ID, Name) VALUES(?, ?)');
|
292 |
$insertAttributeGroupMap = $db->prepare('INSERT OR IGNORE INTO AttributeGroupMap(GroupID, AttributeID) VALUES(?,?)');
|
293 |
$insertProductAttribute = $db->prepare('INSERT OR IGNORE INTO ProductAttributeValue(ProductExternalReference, AttributeID, Value) VALUES (?, ?, ?)');
|
|
|
294 |
$insertProductQuestion = $db->prepare('INSERT OR REPLACE INTO ProductQuestion(ExternalReference, ProductExternalReference, Name, Type, Sequence) VALUES (?, ?, ?, ?, ?)');
|
295 |
$insertProductAnswer = $db->prepare('INSERT INTO ProductQuestionAnswer(ProductQuestionExternalReference, Value, PriceModifier, SKUModifier, Sequence) VALUES (?, ?, ?, ?, ?)');
|
296 |
|
322 |
$simpleProducts->getSelect()
|
323 |
->columns(array('codisto_in_store'=> new Zend_Db_Expr('CASE WHEN `e`.entity_id IN (SELECT product_id FROM `'.$catalogWebsiteName.'` WHERE website_id IN (SELECT website_id FROM `'.$storeName.'` WHERE store_id = '.$storeId.' OR EXISTS(SELECT 1 FROM `'.$storeName.'` WHERE store_id = '.$storeId.' AND website_id = 0))) THEN -1 ELSE 0 END')));
|
324 |
|
325 |
+
// Grouped products
|
326 |
+
$groupedProducts = $this->getProductCollection()
|
327 |
+
->addAttributeToSelect($this->availableProductFields, 'left')
|
328 |
+
->addAttributeToFilter('type_id', array('eq' => 'grouped'))
|
329 |
+
->addAttributeToFilter('entity_id', array('in' => $ids ));
|
330 |
+
|
331 |
+
$groupedProducts->getSelect()
|
332 |
+
->columns(array('codisto_in_store' => new Zend_Db_Expr('CASE WHEN `e`.entity_id IN (SELECT product_id FROM `'.$catalogWebsiteName.'` WHERE website_id IN (SELECT website_id FROM `'.$storeName.'` WHERE store_id = '.$storeId.' OR EXISTS(SELECT 1 FROM `'.$storeName.'` WHERE store_id = '.$storeId.' AND website_id = 0))) THEN -1 ELSE 0 END')));
|
333 |
+
|
334 |
+
|
335 |
$db->exec('BEGIN EXCLUSIVE TRANSACTION');
|
336 |
|
337 |
$db->exec('DELETE FROM Product WHERE ExternalReference IN ('.implode(',', $ids).')');
|
338 |
$db->exec('DELETE FROM ProductImage WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
339 |
$db->exec('DELETE FROM ProductHTML WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
340 |
+
$db->exec('DELETE FROM ProductRelated WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
341 |
+
$db->exec('DELETE FROM ProductAttributeValue WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
342 |
+
$db->exec('DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $ids).'))');
|
343 |
+
$db->exec('DELETE FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
344 |
$db->exec('DELETE FROM SKUMatrix WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
345 |
$db->exec('DELETE FROM SKULink WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
346 |
$db->exec('DELETE FROM SKU WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
|
|
|
|
347 |
$db->exec('DELETE FROM CategoryProduct WHERE ProductExternalReference IN ('.implode(',', $ids).')');
|
348 |
|
349 |
Mage::getSingleton('core/resource_iterator')->walk($configurableProducts->getSelect(), array(array($this, 'SyncConfigurableProductData')),
|
357 |
'preparedskumatrixStatement' => $insertSKUMatrix,
|
358 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
359 |
'preparedimageStatement' => $insertImage,
|
|
|
360 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
361 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
362 |
'preparedattributeStatement' => $insertAttribute,
|
363 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
364 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
365 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
|
|
366 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
367 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
368 |
'store' => $store )
|
377 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
378 |
'preparedimageStatement' => $insertImage,
|
379 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
380 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
381 |
+
'preparedattributeStatement' => $insertAttribute,
|
382 |
+
'preparedattributegroupStatement' => $insertAttributeGroup,
|
383 |
+
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
384 |
+
'preparedproductattributeStatement' => $insertProductAttribute,
|
385 |
+
'preparedproductquestionStatement' => $insertProductQuestion,
|
386 |
+
'preparedproductanswerStatement' => $insertProductAnswer,
|
387 |
+
'store' => $store )
|
388 |
+
);
|
389 |
+
|
390 |
+
Mage::getSingleton('core/resource_iterator')->walk($groupedProducts->getSelect(), array(array($this, 'SyncGroupedProductData')),
|
391 |
+
array(
|
392 |
+
'type' => 'grouped',
|
393 |
+
'db' => $db,
|
394 |
+
'preparedStatement' => $insertProduct,
|
395 |
+
'preparedcheckproductStatement' => $checkProduct,
|
396 |
+
'preparedskuStatement' => $insertSKU,
|
397 |
+
'preparedskulinkStatement' => $insertSKULink,
|
398 |
+
'preparedskumatrixStatement' => $insertSKUMatrix,
|
399 |
+
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
400 |
+
'preparedimageStatement' => $insertImage,
|
401 |
+
'preparedproducthtmlStatement' => $insertProductHTML,
|
402 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
403 |
'preparedattributeStatement' => $insertAttribute,
|
404 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
405 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
406 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
|
|
407 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
408 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
409 |
'store' => $store )
|
410 |
);
|
411 |
|
412 |
+
$db->exec('DELETE FROM ProductOptionValue');
|
413 |
+
|
414 |
$insertProductOptionValue = $db->prepare('INSERT INTO ProductOptionValue (ExternalReference, Sequence) VALUES (?,?)');
|
415 |
|
416 |
$options = Mage::getResourceModel('eav/entity_attribute_option_collection')
|
432 |
|
433 |
$db->exec('BEGIN EXCLUSIVE TRANSACTION');
|
434 |
|
435 |
+
$db->exec('CREATE TABLE IF NOT EXISTS ProductDelete(ExternalReference text NOT NULL PRIMARY KEY)');
|
436 |
+
|
437 |
if(!is_array($ids))
|
438 |
{
|
439 |
$ids = array($ids);
|
440 |
}
|
441 |
|
442 |
+
$db->exec(
|
443 |
+
'DELETE FROM Product WHERE ExternalReference IN ('.implode(',', $ids).');'.
|
444 |
+
'DELETE FROM ProductImage WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
445 |
+
'DELETE FROM ProductHTML WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
446 |
+
'DELETE FROM ProductRelated WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
447 |
+
'DELETE FROM ProductAttributeValue WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
448 |
+
'DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $ids).'));'.
|
449 |
+
'DELETE FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
450 |
+
'DELETE FROM SKULink WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
451 |
+
'DELETE FROM SKUMatrix WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
452 |
+
'DELETE FROM SKU WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
453 |
+
'DELETE FROM CategoryProduct WHERE ProductExternalReference IN ('.implode(',', $ids).')'
|
454 |
+
);
|
455 |
+
|
456 |
foreach($ids as $id)
|
457 |
{
|
458 |
+
$db->exec('INSERT OR IGNORE INTO ProductDelete VALUES('.$id.')');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
459 |
}
|
460 |
|
461 |
$db->exec('COMMIT TRANSACTION');
|
807 |
$insertCategorySQL = $args['preparedcategoryproductStatement'];
|
808 |
$insertImageSQL = $args['preparedimageStatement'];
|
809 |
$insertHTMLSQL = $args['preparedproducthtmlStatement'];
|
810 |
+
$insertRelatedSQL = $args['preparedproductrelatedStatement'];
|
811 |
$insertAttributeSQL = $args['preparedattributeStatement'];
|
812 |
$insertAttributeGroupSQL = $args['preparedattributegroupStatement'];
|
813 |
$insertAttributeGroupMapSQL = $args['preparedattributegroupmapStatement'];
|
814 |
$insertProductAttributeSQL = $args['preparedproductattributeStatement'];
|
|
|
815 |
$insertProductQuestionSQL = $args['preparedproductquestionStatement'];
|
816 |
$insertProductAnswerSQL = $args['preparedproductanswerStatement'];
|
817 |
|
897 |
$insertHTMLSQL->execute(array($product_id, 'Short Description', $shortDescription));
|
898 |
}
|
899 |
|
|
|
|
|
900 |
$attributeSet = array();
|
901 |
$attributeCodes = array();
|
902 |
$attributeTypes = array();
|
1288 |
}
|
1289 |
}
|
1290 |
|
1291 |
+
// process related products
|
1292 |
+
$relatedProductIds = $product->getRelatedProductIds();
|
1293 |
+
foreach($relatedProductIds as $relatedProductId)
|
1294 |
+
{
|
1295 |
+
$insertRelatedSQL->execute(array($relatedProductId, $product_id));
|
1296 |
+
}
|
1297 |
|
1298 |
// process simple product question/answers
|
|
|
1299 |
|
1300 |
$options = $product->getProductOptionsCollection();
|
1301 |
|
1473 |
'DELETE FROM Product WHERE ExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1474 |
'DELETE FROM ProductImage WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1475 |
'DELETE FROM ProductHTML WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1476 |
+
'DELETE FROM ProductRelated WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1477 |
+
'DELETE FROM ProductAttributeValue WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1478 |
+
'DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).'));'.
|
1479 |
+
'DELETE FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1480 |
'DELETE FROM SKULink WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1481 |
'DELETE FROM SKUMatrix WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1482 |
'DELETE FROM SKU WHERE ProductExternalReference IN ('.implode(',', $productUpdateIds).');'.
|
1490 |
$insertSKULink = $db->prepare('INSERT OR REPLACE INTO SKULink (SKUExternalReference, ProductExternalReference, Price) VALUES (?, ?, ?)');
|
1491 |
$insertSKUMatrix = $db->prepare('INSERT INTO SKUMatrix(SKUExternalReference, ProductExternalReference, Code, OptionName, OptionValue, ProductOptionExternalReference, ProductOptionValueExternalReference) VALUES(?,?,?,?,?,?,?)');
|
1492 |
$insertImage = $db->prepare('INSERT INTO ProductImage(ProductExternalReference, URL, Tag, Sequence, Enabled) VALUES(?,?,?,?,?)');
|
|
|
1493 |
$insertProductHTML = $db->prepare('INSERT OR IGNORE INTO ProductHTML(ProductExternalReference, Tag, HTML) VALUES (?, ?, ?)');
|
1494 |
+
$insertProductRelated = $db->prepare('INSERT OR IGNORE INTO ProductRelated(RelatedProductExternalReference, ProductExternalReference) VALUES (?, ?)');
|
1495 |
$insertAttribute = $db->prepare('INSERT OR REPLACE INTO Attribute(ID, Code, Label, Type, Input) VALUES (?, ?, ?, ?, ?)');
|
1496 |
$insertAttributeGroup = $db->prepare('INSERT OR REPLACE INTO AttributeGroup(ID, Name) VALUES(?, ?)');
|
1497 |
$insertAttributeGroupMap = $db->prepare('INSERT OR IGNORE INTO AttributeGroupMap(GroupID, AttributeID) VALUES(?,?)');
|
1498 |
$insertProductAttribute = $db->prepare('INSERT OR IGNORE INTO ProductAttributeValue(ProductExternalReference, AttributeID, Value) VALUES (?, ?, ?)');
|
|
|
1499 |
$insertProductQuestion = $db->prepare('INSERT OR REPLACE INTO ProductQuestion(ExternalReference, ProductExternalReference, Name, Type, Sequence) VALUES (?, ?, ?, ?, ?)');
|
1500 |
$insertProductAnswer = $db->prepare('INSERT INTO ProductQuestionAnswer(ProductQuestionExternalReference, Value, PriceModifier, SKUModifier, Sequence) VALUES (?, ?, ?, ?, ?)');
|
1501 |
|
1502 |
// Simple Products not participating as configurable skus
|
1503 |
$simpleProducts = $this->getProductCollection()
|
1504 |
+
->addAttributeToSelect($this->availableProductFields, 'left')
|
1505 |
->addAttributeToFilter('type_id', array('eq' => 'simple'))
|
1506 |
->addAttributeToFilter('entity_id', array('in' => $productUpdateIds) );
|
1507 |
$simpleProducts->getSelect()
|
1512 |
'type' => 'simple',
|
1513 |
'db' => $db,
|
1514 |
'preparedStatement' => $insertProduct,
|
1515 |
+
'preparedcheckproductStatement' => $checkProduct,
|
1516 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1517 |
'preparedimageStatement' => $insertImage,
|
1518 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1519 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
1520 |
'preparedattributeStatement' => $insertAttribute,
|
1521 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1522 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1523 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
|
|
1524 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1525 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1526 |
'store' => $storeObject ));
|
1527 |
|
1528 |
// Configurable products
|
1529 |
$configurableProducts = $this->getProductCollection()
|
1530 |
+
->addAttributeToSelect($this->availableProductFields, 'left')
|
1531 |
->addAttributeToFilter('type_id', array('eq' => 'configurable'))
|
1532 |
->addAttributeToFilter('entity_id', array('in' => $productUpdateIds));
|
1533 |
$configurableProducts->getSelect()
|
1538 |
'type' => 'configurable',
|
1539 |
'db' => $db,
|
1540 |
'preparedStatement' => $insertProduct,
|
1541 |
+
'preparedcheckproductStatement' => $checkProduct,
|
1542 |
'preparedskuStatement' => $insertSKU,
|
1543 |
'preparedskulinkStatement' => $insertSKULink,
|
1544 |
'preparedskumatrixStatement' => $insertSKUMatrix,
|
1545 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1546 |
'preparedimageStatement' => $insertImage,
|
1547 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1548 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
1549 |
'preparedattributeStatement' => $insertAttribute,
|
1550 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1551 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1552 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
|
|
1553 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1554 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1555 |
'store' => $storeObject )
|
1557 |
|
1558 |
// Grouped products
|
1559 |
$groupedProducts = $this->getProductCollection()
|
1560 |
+
->addAttributeToSelect($this->availableProductFields, 'left')
|
1561 |
->addAttributeToFilter('type_id', array('eq' => 'grouped'))
|
1562 |
->addAttributeToFilter('entity_id', array('in' => $productUpdateIds ));
|
1563 |
|
1569 |
'type' => 'grouped',
|
1570 |
'db' => $db,
|
1571 |
'preparedStatement' => $insertProduct,
|
1572 |
+
'preparedcheckproductStatement' => $checkProduct,
|
1573 |
'preparedskuStatement' => $insertSKU,
|
1574 |
'preparedskulinkStatement' => $insertSKULink,
|
1575 |
'preparedskumatrixStatement' => $insertSKUMatrix,
|
1576 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1577 |
'preparedimageStatement' => $insertImage,
|
1578 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1579 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
1580 |
'preparedattributeStatement' => $insertAttribute,
|
1581 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1582 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1583 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
|
|
1584 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1585 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1586 |
'store' => $storeObject )
|
1665 |
{
|
1666 |
$db->exec('INSERT OR REPLACE INTO ProductChange (ExternalReference) VALUES ('.$updateId.')');
|
1667 |
}
|
1668 |
+
|
1669 |
+
$db->exec('DELETE FROM ProductOptionValue');
|
1670 |
+
|
1671 |
+
$insertProductOptionValue = $db->prepare('INSERT INTO ProductOptionValue (ExternalReference, Sequence) VALUES (?,?)');
|
1672 |
+
|
1673 |
+
$options = Mage::getResourceModel('eav/entity_attribute_option_collection')
|
1674 |
+
->setPositionOrder('asc', true)
|
1675 |
+
->load();
|
1676 |
+
|
1677 |
+
foreach($options as $opt){
|
1678 |
+
$sequence = $opt->getSortOrder();
|
1679 |
+
$optId = $opt->getId();
|
1680 |
+
$insertProductOptionValue->execute(array($optId, $sequence));
|
1681 |
+
}
|
1682 |
}
|
1683 |
|
1684 |
if(!empty($categoryUpdateIds))
|
1834 |
$insertSKULink = $db->prepare('INSERT OR REPLACE INTO SKULink (SKUExternalReference, ProductExternalReference, Price) VALUES (?, ?, ?)');
|
1835 |
$insertSKUMatrix = $db->prepare('INSERT INTO SKUMatrix(SKUExternalReference, ProductExternalReference, Code, OptionName, OptionValue, ProductOptionExternalReference, ProductOptionValueExternalReference) VALUES(?,?,?,?,?,?,?)');
|
1836 |
$insertImage = $db->prepare('INSERT INTO ProductImage(ProductExternalReference, URL, Tag, Sequence, Enabled) VALUES(?,?,?,?,?)');
|
|
|
1837 |
$insertProductHTML = $db->prepare('INSERT OR IGNORE INTO ProductHTML(ProductExternalReference, Tag, HTML) VALUES (?, ?, ?)');
|
1838 |
+
$insertProductRelated = $db->prepare('INSERT OR IGNORE INTO ProductRelated(RelatedProductExternalReference, ProductExternalReference) VALUES (?, ?)');
|
1839 |
$insertAttribute = $db->prepare('INSERT OR REPLACE INTO Attribute(ID, Code, Label, Type, Input) VALUES (?, ?, ?, ?, ?)');
|
1840 |
$insertAttributeGroup = $db->prepare('INSERT OR REPLACE INTO AttributeGroup(ID, Name) VALUES(?, ?)');
|
1841 |
$insertAttributeGroupMap = $db->prepare('INSERT OR IGNORE INTO AttributeGroupMap(GroupID, AttributeID) VALUES(?,?)');
|
1842 |
$insertProductAttribute = $db->prepare('INSERT OR IGNORE INTO ProductAttributeValue(ProductExternalReference, AttributeID, Value) VALUES (?, ?, ?)');
|
|
|
1843 |
$insertProductQuestion = $db->prepare('INSERT OR REPLACE INTO ProductQuestion(ExternalReference, ProductExternalReference, Name, Type, Sequence) VALUES (?, ?, ?, ?, ?)');
|
1844 |
$insertProductAnswer = $db->prepare('INSERT INTO ProductQuestionAnswer(ProductQuestionExternalReference, Value, PriceModifier, SKUModifier, Sequence) VALUES (?, ?, ?, ?, ?)');
|
1845 |
$insertOrders = $db->prepare('INSERT OR REPLACE INTO [Order] (ID, Status, PaymentDate, ShipmentDate, Carrier, TrackingNumber) VALUES (?, ?, ?, ?, ?, ?)');
|
1950 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1951 |
'preparedimageStatement' => $insertImage,
|
1952 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1953 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
1954 |
'preparedattributeStatement' => $insertAttribute,
|
1955 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
1956 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
1957 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
|
|
1958 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
1959 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
1960 |
'store' => $store ));
|
1996 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
1997 |
'preparedimageStatement' => $insertImage,
|
1998 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
1999 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
2000 |
'preparedattributeStatement' => $insertAttribute,
|
2001 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
2002 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
2003 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
|
|
2004 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
2005 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
2006 |
'store' => $store )
|
2043 |
'preparedcategoryproductStatement' => $insertCategoryProduct,
|
2044 |
'preparedimageStatement' => $insertImage,
|
2045 |
'preparedproducthtmlStatement' => $insertProductHTML,
|
2046 |
+
'preparedproductrelatedStatement' => $insertProductRelated,
|
2047 |
'preparedattributeStatement' => $insertAttribute,
|
2048 |
'preparedattributegroupStatement' => $insertAttributeGroup,
|
2049 |
'preparedattributegroupmapStatement' => $insertAttributeGroupMap,
|
2050 |
'preparedproductattributeStatement' => $insertProductAttribute,
|
|
|
2051 |
'preparedproductquestionStatement' => $insertProductQuestion,
|
2052 |
'preparedproductanswerStatement' => $insertProductAnswer,
|
2053 |
'store' => $store )
|
2489 |
$db->exec('CREATE TABLE IF NOT EXISTS ProductHTML (ProductExternalReference text NOT NULL, Tag text NOT NULL, HTML text NOT NULL, PRIMARY KEY (ProductExternalReference, Tag))');
|
2490 |
$db->exec('CREATE INDEX IF NOT EXISTS IX_ProductHTML_ProductExternalReference ON ProductHTML(ProductExternalReference)');
|
2491 |
|
2492 |
+
$db->exec('CREATE TABLE IF NOT EXISTS ProductRelated (RelatedProductExternalReference text NOT NULL, ProductExternalReference text NOT NULL, PRIMARY KEY (ProductExternalReference, RelatedProductExternalReference))');
|
2493 |
+
|
2494 |
$db->exec('CREATE TABLE IF NOT EXISTS Attribute (ID integer NOT NULL PRIMARY KEY, Code text NOT NULL, Label text NOT NULL, Type text NOT NULL, Input text NOT NULL)');
|
2495 |
$db->exec('CREATE TABLE IF NOT EXISTS AttributeGroupMap (AttributeID integer NOT NULL, GroupID integer NOT NULL, PRIMARY KEY(AttributeID, GroupID))');
|
2496 |
$db->exec('CREATE TABLE IF NOT EXISTS AttributeGroup (ID integer NOT NULL PRIMARY KEY, Name text NOT NULL)');
|
app/code/community/Codisto/Sync/controllers/CodistoController.php
CHANGED
@@ -68,6 +68,13 @@ class Codisto_Sync_CodistoController extends Mage_Adminhtml_Controller_Action
|
|
68 |
$this->renderPane($url, 'codisto-attributemapping');
|
69 |
}
|
70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
public function settingsAction()
|
72 |
{
|
73 |
$url = preg_replace('/\/ebaytab(?:\/index)?(\/key\/)?/', '/settings$1', Mage::getModel('adminhtml/url')->getUrl('codisto/ebaytab'));
|
68 |
$this->renderPane($url, 'codisto-attributemapping');
|
69 |
}
|
70 |
|
71 |
+
public function accountAction()
|
72 |
+
{
|
73 |
+
$url = preg_replace('/\/ebaytab(?:\/index)?(\/key\/)?/', '/account$1', Mage::getModel('adminhtml/url')->getUrl('codisto/ebaytab'));
|
74 |
+
|
75 |
+
$this->renderPane($url, 'codisto-account');
|
76 |
+
}
|
77 |
+
|
78 |
public function settingsAction()
|
79 |
{
|
80 |
$url = preg_replace('/\/ebaytab(?:\/index)?(\/key\/)?/', '/settings$1', Mage::getModel('adminhtml/url')->getUrl('codisto/ebaytab'));
|
app/code/community/Codisto/Sync/controllers/IndexController.php
CHANGED
@@ -379,7 +379,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
379 |
{
|
380 |
$quote = Mage::getModel('sales/quote');
|
381 |
|
382 |
-
$this->ProcessQuote($quote, $xml, $store);
|
383 |
}
|
384 |
catch(Exception $e)
|
385 |
{
|
@@ -410,11 +410,11 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
410 |
|
411 |
if($order && $order->getId())
|
412 |
{
|
413 |
-
$this->ProcessOrderSync($quote, $order, $xml, $productsToReindex, $ordersProcessed, $invoicesProcessed, $store);
|
414 |
}
|
415 |
else
|
416 |
{
|
417 |
-
$this->ProcessOrderCreate($quote, $xml, $productsToReindex, $ordersProcessed, $invoicesProcessed, $store);
|
418 |
}
|
419 |
|
420 |
$connection->commit();
|
@@ -532,8 +532,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
532 |
}
|
533 |
}
|
534 |
|
535 |
-
private function ProcessOrderCreate($quote, $xml, &$productsToReindex, &$orderids, &$invoiceids, $store)
|
536 |
{
|
|
|
537 |
$ordercontent = $xml->entry->content->children('http://api.codisto.com/schemas/2009/');
|
538 |
|
539 |
$paypaltransactionid = $ordercontent->orderpayments[0]->orderpayment->transactionid;
|
@@ -608,6 +609,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
608 |
$productid = intval($productid);
|
609 |
|
610 |
$product = Mage::getModel('catalog/product')->load($productid);
|
|
|
611 |
if($product->getId())
|
612 |
{
|
613 |
$productcode = $product->getSku();
|
@@ -621,6 +623,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
621 |
|
622 |
if(!$product)
|
623 |
{
|
|
|
|
|
|
|
624 |
$product = Mage::getModel('catalog/product');
|
625 |
$adjustStock = false;
|
626 |
}
|
@@ -798,7 +803,8 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
798 |
|
799 |
try
|
800 |
{
|
801 |
-
|
|
|
802 |
}
|
803 |
catch(Exception $e)
|
804 |
{
|
@@ -832,6 +838,10 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
832 |
|
833 |
}
|
834 |
|
|
|
|
|
|
|
|
|
835 |
$order->setBaseTotalPaid(0);
|
836 |
$order->setTotalPaid(0);
|
837 |
$order->setBaseTotalDue(0);
|
@@ -933,8 +943,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
933 |
$orderids[] = $order->getId();
|
934 |
}
|
935 |
|
936 |
-
private function ProcessOrderSync($quote, $order, $xml, &$productsToReindex, &$orderids, &$invoiceids, $store)
|
937 |
{
|
|
|
938 |
$orderstatus = $order->getStatus();
|
939 |
$ordercontent = $xml->entry->content->children('http://api.codisto.com/schemas/2009/');
|
940 |
|
@@ -988,7 +999,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
988 |
if(!$ebaysalesrecordnumber)
|
989 |
$ebaysalesrecordnumber = '';
|
990 |
|
991 |
-
$currencyCode = (string)$ordercontent->transactcurrency;
|
992 |
$ordertotal = floatval($ordercontent->ordertotal[0]);
|
993 |
$ordersubtotal = floatval($ordercontent->ordersubtotal[0]);
|
994 |
$ordertaxtotal = floatval($ordercontent->ordertaxtotal[0]);
|
@@ -1097,11 +1108,13 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
1097 |
$productname = (string)$productname;
|
1098 |
|
1099 |
$productid = $orderline->externalreference[0];
|
|
|
1100 |
if($productid != null)
|
1101 |
{
|
1102 |
$productid = intval($productid);
|
1103 |
|
1104 |
$product = Mage::getModel('catalog/product')->load($productid);
|
|
|
1105 |
if($product->getId())
|
1106 |
{
|
1107 |
$productcode = $product->getSku();
|
@@ -1115,6 +1128,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
1115 |
|
1116 |
if(!$product)
|
1117 |
{
|
|
|
|
|
|
|
1118 |
$product = Mage::getModel('catalog/product');
|
1119 |
$adjustStock = false;
|
1120 |
}
|
@@ -1492,8 +1508,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
1492 |
$orderids[] = $order->getId();
|
1493 |
}
|
1494 |
|
1495 |
-
private function ProcessQuote($quote, $xml, $store)
|
1496 |
{
|
|
|
1497 |
$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
|
1498 |
|
1499 |
$ordercontent = $xml->entry->content->children('http://api.codisto.com/schemas/2009/');
|
@@ -1671,7 +1688,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
1671 |
}
|
1672 |
}
|
1673 |
|
1674 |
-
$currencyCode = $ordercontent->transactcurrency[0];
|
1675 |
$ordertotal = floatval($ordercontent->ordertotal[0]);
|
1676 |
$ordersubtotal = floatval($ordercontent->ordersubtotal[0]);
|
1677 |
$ordertaxtotal = floatval($ordercontent->ordertaxtotal[0]);
|
@@ -1735,6 +1752,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
1735 |
$productid = intval($productid);
|
1736 |
|
1737 |
$product = Mage::getModel('catalog/product')->load($productid);
|
|
|
1738 |
if($product->getId())
|
1739 |
{
|
1740 |
$productcode = $product->getSku();
|
@@ -1748,6 +1766,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
1748 |
|
1749 |
if(!$product)
|
1750 |
{
|
|
|
|
|
|
|
1751 |
$product = Mage::getModel('catalog/product');
|
1752 |
}
|
1753 |
|
@@ -1897,53 +1918,55 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
1897 |
|
1898 |
try {
|
1899 |
|
1900 |
-
|
1901 |
-
|
1902 |
-
|
1903 |
-
|
1904 |
-
|
1905 |
-
|
1906 |
-
|
1907 |
-
|
1908 |
-
|
1909 |
-
|
1910 |
-
|
1911 |
-
|
1912 |
-
|
1913 |
-
|
1914 |
-
|
1915 |
-
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
1919 |
-
|
1920 |
-
|
1921 |
-
|
1922 |
-
|
1923 |
-
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
1927 |
-
if($shippingRate instanceof Mage_Shipping_Model_Rate_Result_Method)
|
1928 |
{
|
1929 |
-
if(
|
1930 |
{
|
1931 |
-
$
|
1932 |
-
(preg_match('/(?:^|\W|_)pick\s*up(?:\W|_|$)/i', strval($shippingRate->getMethod())) ||
|
1933 |
-
preg_match('/(?:^|\W|_)pick\s*up(?:\W|_|$)/i', strval($shippingRate->getCarrierTitle())) ||
|
1934 |
-
preg_match('/(?:^|\W|_)pick\s*up(?:\W|_|$)/i', strval($shippingRate->getMethodTitle())));
|
1935 |
-
|
1936 |
-
if(!$isPickup)
|
1937 |
{
|
1938 |
-
$
|
1939 |
-
|
1940 |
-
|
1941 |
-
|
1942 |
-
|
1943 |
-
|
1944 |
-
|
1945 |
-
|
1946 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1947 |
}
|
1948 |
}
|
1949 |
}
|
@@ -1968,7 +1991,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
1968 |
|
1969 |
$shippingAddress->addShippingRate($freightRate);
|
1970 |
$shippingAddress->setShippingMethod($freightcode);
|
1971 |
-
$shippingAddress->setShippingDescription($freightmethodtitle);
|
1972 |
$shippingAddress->setShippingAmount($freighttotal);
|
1973 |
$shippingAddress->setBaseShippingAmount($freighttotal);
|
1974 |
$shippingAddress->save();
|
379 |
{
|
380 |
$quote = Mage::getModel('sales/quote');
|
381 |
|
382 |
+
$this->ProcessQuote($quote, $xml, $store, $request);
|
383 |
}
|
384 |
catch(Exception $e)
|
385 |
{
|
410 |
|
411 |
if($order && $order->getId())
|
412 |
{
|
413 |
+
$this->ProcessOrderSync($quote, $order, $xml, $productsToReindex, $ordersProcessed, $invoicesProcessed, $store, $request);
|
414 |
}
|
415 |
else
|
416 |
{
|
417 |
+
$this->ProcessOrderCreate($quote, $xml, $productsToReindex, $ordersProcessed, $invoicesProcessed, $store, $request);
|
418 |
}
|
419 |
|
420 |
$connection->commit();
|
532 |
}
|
533 |
}
|
534 |
|
535 |
+
private function ProcessOrderCreate($quote, $xml, &$productsToReindex, &$orderids, &$invoiceids, $store, $request)
|
536 |
{
|
537 |
+
|
538 |
$ordercontent = $xml->entry->content->children('http://api.codisto.com/schemas/2009/');
|
539 |
|
540 |
$paypaltransactionid = $ordercontent->orderpayments[0]->orderpayment->transactionid;
|
609 |
$productid = intval($productid);
|
610 |
|
611 |
$product = Mage::getModel('catalog/product')->load($productid);
|
612 |
+
|
613 |
if($product->getId())
|
614 |
{
|
615 |
$productcode = $product->getSku();
|
623 |
|
624 |
if(!$product)
|
625 |
{
|
626 |
+
if($request->getQuery('checkproduct')) {
|
627 |
+
throw new Exception("external reference not found");
|
628 |
+
}
|
629 |
$product = Mage::getModel('catalog/product');
|
630 |
$adjustStock = false;
|
631 |
}
|
803 |
|
804 |
try
|
805 |
{
|
806 |
+
if(!$request->getQuery('skiporderevent'))
|
807 |
+
$order->place();
|
808 |
}
|
809 |
catch(Exception $e)
|
810 |
{
|
838 |
|
839 |
}
|
840 |
|
841 |
+
if($adjustStock == false) {
|
842 |
+
$order->addStatusToHistory($order->getStatus(), "NOTE: Stock level not adjusted, please check your inventory.");
|
843 |
+
}
|
844 |
+
|
845 |
$order->setBaseTotalPaid(0);
|
846 |
$order->setTotalPaid(0);
|
847 |
$order->setBaseTotalDue(0);
|
943 |
$orderids[] = $order->getId();
|
944 |
}
|
945 |
|
946 |
+
private function ProcessOrderSync($quote, $order, $xml, &$productsToReindex, &$orderids, &$invoiceids, $store, $request)
|
947 |
{
|
948 |
+
|
949 |
$orderstatus = $order->getStatus();
|
950 |
$ordercontent = $xml->entry->content->children('http://api.codisto.com/schemas/2009/');
|
951 |
|
999 |
if(!$ebaysalesrecordnumber)
|
1000 |
$ebaysalesrecordnumber = '';
|
1001 |
|
1002 |
+
$currencyCode = (string)$ordercontent->transactcurrency[0];
|
1003 |
$ordertotal = floatval($ordercontent->ordertotal[0]);
|
1004 |
$ordersubtotal = floatval($ordercontent->ordersubtotal[0]);
|
1005 |
$ordertaxtotal = floatval($ordercontent->ordertaxtotal[0]);
|
1108 |
$productname = (string)$productname;
|
1109 |
|
1110 |
$productid = $orderline->externalreference[0];
|
1111 |
+
|
1112 |
if($productid != null)
|
1113 |
{
|
1114 |
$productid = intval($productid);
|
1115 |
|
1116 |
$product = Mage::getModel('catalog/product')->load($productid);
|
1117 |
+
|
1118 |
if($product->getId())
|
1119 |
{
|
1120 |
$productcode = $product->getSku();
|
1128 |
|
1129 |
if(!$product)
|
1130 |
{
|
1131 |
+
if($request->getQuery('checkproduct')) {
|
1132 |
+
throw new Exception('externalreference not found');
|
1133 |
+
}
|
1134 |
$product = Mage::getModel('catalog/product');
|
1135 |
$adjustStock = false;
|
1136 |
}
|
1508 |
$orderids[] = $order->getId();
|
1509 |
}
|
1510 |
|
1511 |
+
private function ProcessQuote($quote, $xml, $store, $request)
|
1512 |
{
|
1513 |
+
|
1514 |
$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
|
1515 |
|
1516 |
$ordercontent = $xml->entry->content->children('http://api.codisto.com/schemas/2009/');
|
1688 |
}
|
1689 |
}
|
1690 |
|
1691 |
+
$currencyCode = (string)$ordercontent->transactcurrency[0];
|
1692 |
$ordertotal = floatval($ordercontent->ordertotal[0]);
|
1693 |
$ordersubtotal = floatval($ordercontent->ordersubtotal[0]);
|
1694 |
$ordertaxtotal = floatval($ordercontent->ordertaxtotal[0]);
|
1752 |
$productid = intval($productid);
|
1753 |
|
1754 |
$product = Mage::getModel('catalog/product')->load($productid);
|
1755 |
+
|
1756 |
if($product->getId())
|
1757 |
{
|
1758 |
$productcode = $product->getSku();
|
1766 |
|
1767 |
if(!$product)
|
1768 |
{
|
1769 |
+
if($request->getQuery('checkproduct')) {
|
1770 |
+
throw new Exception('externalreference not found');
|
1771 |
+
}
|
1772 |
$product = Mage::getModel('catalog/product');
|
1773 |
}
|
1774 |
|
1918 |
|
1919 |
try {
|
1920 |
|
1921 |
+
if(!$request->getQuery('skipshipping')) {
|
1922 |
+
$shippingRequest = Mage::getModel('shipping/rate_request');
|
1923 |
+
$shippingRequest->setAllItems($quote->getAllItems());
|
1924 |
+
$shippingRequest->setDestCountryId($shippingAddress->getCountryId());
|
1925 |
+
$shippingRequest->setDestRegionId($shippingAddress->getRegionId());
|
1926 |
+
$shippingRequest->setDestRegionCode($shippingAddress->getRegionCode());
|
1927 |
+
$shippingRequest->setDestStreet($shippingAddress->getStreet(-1));
|
1928 |
+
$shippingRequest->setDestCity($shippingAddress->getCity());
|
1929 |
+
$shippingRequest->setDestPostcode($shippingAddress->getPostcode());
|
1930 |
+
$shippingRequest->setPackageValue($quote->getBaseSubtotal());
|
1931 |
+
$shippingRequest->setPackageValueWithDiscount($quote->getBaseSubtotalWithDiscount());
|
1932 |
+
$shippingRequest->setPackageWeight($quote->getWeight());
|
1933 |
+
$shippingRequest->setPackageQty($quote->getItemQty());
|
1934 |
+
$shippingRequest->setPackagePhysicalValue($quote->getBaseSubtotal());
|
1935 |
+
$shippingRequest->setFreeMethodWeight($quote->getWeight());
|
1936 |
+
$shippingRequest->setStoreId($store->getId());
|
1937 |
+
$shippingRequest->setWebsiteId($store->getWebsiteId());
|
1938 |
+
$shippingRequest->setFreeShipping(false);
|
1939 |
+
$shippingRequest->setBaseCurrency($currencyCode);
|
1940 |
+
$shippingRequest->setPackageCurrency($currencyCode);
|
1941 |
+
$shippingRequest->setBaseSubtotalInclTax($quote->getBaseSubtotalInclTax());
|
1942 |
+
|
1943 |
+
$shippingResult = Mage::getModel('shipping/shipping')->collectRates($shippingRequest)->getResult();
|
1944 |
+
|
1945 |
+
$shippingRates = $shippingResult->getAllRates();
|
1946 |
+
|
1947 |
+
foreach($shippingRates as $shippingRate)
|
|
|
1948 |
{
|
1949 |
+
if($shippingRate instanceof Mage_Shipping_Model_Rate_Result_Method)
|
1950 |
{
|
1951 |
+
if(is_null($freightcost) || (!is_null($shippingRate->getPrice()) && $shippingRate->getPrice() < $freightcost))
|
|
|
|
|
|
|
|
|
|
|
1952 |
{
|
1953 |
+
$isPickup = $shippingRate->getPrice() == 0 &&
|
1954 |
+
(preg_match('/(?:^|\W|_)pick\s*up(?:\W|_|$)/i', strval($shippingRate->getMethod())) ||
|
1955 |
+
preg_match('/(?:^|\W|_)pick\s*up(?:\W|_|$)/i', strval($shippingRate->getCarrierTitle())) ||
|
1956 |
+
preg_match('/(?:^|\W|_)pick\s*up(?:\W|_|$)/i', strval($shippingRate->getMethodTitle())));
|
1957 |
+
|
1958 |
+
if(!$isPickup)
|
1959 |
+
{
|
1960 |
+
$freightRate = Mage::getModel('sales/quote_address_rate')
|
1961 |
+
->importShippingRate($shippingRate);
|
1962 |
+
|
1963 |
+
$freightcode = $freightRate->getCode();
|
1964 |
+
$freightcarrier = $freightRate->getCarrier();
|
1965 |
+
$freightcarriertitle = $freightRate->getCarrierTitle();
|
1966 |
+
$freightmethod = $freightRate->getMethod();
|
1967 |
+
$freightmethodtitle = $freightRate->getMethodTitle();
|
1968 |
+
$freightmethoddescription = $freightRate->getMethodDescription();
|
1969 |
+
}
|
1970 |
}
|
1971 |
}
|
1972 |
}
|
1991 |
|
1992 |
$shippingAddress->addShippingRate($freightRate);
|
1993 |
$shippingAddress->setShippingMethod($freightcode);
|
1994 |
+
$shippingAddress->setShippingDescription($freightcarriertitle.' - '.$freightmethodtitle);
|
1995 |
$shippingAddress->setShippingAmount($freighttotal);
|
1996 |
$shippingAddress->setBaseShippingAmount($freighttotal);
|
1997 |
$shippingAddress->save();
|
app/code/community/Codisto/Sync/controllers/SyncController.php
CHANGED
@@ -145,6 +145,7 @@ class Codisto_Sync_SyncController extends Mage_Core_Controller_Front_Action
|
|
145 |
$db->exec('CREATE TABLE SKUMatrix AS SELECT * FROM SyncDb.SKUMatrix WHERE ProductExternalReference IN (SELECT ExternalReference FROM Product)');
|
146 |
$db->exec('CREATE TABLE ProductOptionValue AS SELECT DISTINCT * FROM SyncDb.ProductOptionValue');
|
147 |
$db->exec('CREATE TABLE ProductHTML AS SELECT * FROM SyncDb.ProductHTML WHERE ProductExternalReference IN (SELECT ExternalReference FROM Product)');
|
|
|
148 |
$db->exec('CREATE TABLE Attribute AS SELECT * FROM SyncDb.Attribute');
|
149 |
$db->exec('CREATE TABLE AttributeGroup AS SELECT * FROM SyncDb.AttributeGroup');
|
150 |
$db->exec('CREATE TABLE AttributeGroupMap AS SELECT * FROM SyncDb.AttributeGroupMap');
|
@@ -215,6 +216,7 @@ class Codisto_Sync_SyncController extends Mage_Core_Controller_Front_Action
|
|
215 |
$db->exec('CREATE TABLE SKUMatrix AS SELECT * FROM SyncDb.SKUMatrix WHERE ProductExternalReference IN (SELECT ExternalReference FROM SyncDb.ProductChange)');
|
216 |
$db->exec('CREATE TABLE ProductOptionValue AS SELECT DISTINCT * FROM SyncDb.ProductOptionValue');
|
217 |
$db->exec('CREATE TABLE ProductHTML AS SELECT * FROM SyncDb.ProductHTML WHERE ProductExternalReference IN (SELECT ExternalReference FROM SyncDb.ProductChange)');
|
|
|
218 |
$db->exec('CREATE TABLE Attribute AS SELECT * FROM SyncDb.Attribute');
|
219 |
$db->exec('CREATE TABLE AttributeGroup AS SELECT * FROM SyncDb.AttributeGroup');
|
220 |
$db->exec('CREATE TABLE AttributeGroupMap AS SELECT * FROM SyncDb.AttributeGroupMap');
|
145 |
$db->exec('CREATE TABLE SKUMatrix AS SELECT * FROM SyncDb.SKUMatrix WHERE ProductExternalReference IN (SELECT ExternalReference FROM Product)');
|
146 |
$db->exec('CREATE TABLE ProductOptionValue AS SELECT DISTINCT * FROM SyncDb.ProductOptionValue');
|
147 |
$db->exec('CREATE TABLE ProductHTML AS SELECT * FROM SyncDb.ProductHTML WHERE ProductExternalReference IN (SELECT ExternalReference FROM Product)');
|
148 |
+
$db->exec('CREATE TABLE ProductRelated AS SELECT * FROM SyncDb.ProductRelated WHERE ProductExternalReference IN (SELECT ExternalReference FROM Product)');
|
149 |
$db->exec('CREATE TABLE Attribute AS SELECT * FROM SyncDb.Attribute');
|
150 |
$db->exec('CREATE TABLE AttributeGroup AS SELECT * FROM SyncDb.AttributeGroup');
|
151 |
$db->exec('CREATE TABLE AttributeGroupMap AS SELECT * FROM SyncDb.AttributeGroupMap');
|
216 |
$db->exec('CREATE TABLE SKUMatrix AS SELECT * FROM SyncDb.SKUMatrix WHERE ProductExternalReference IN (SELECT ExternalReference FROM SyncDb.ProductChange)');
|
217 |
$db->exec('CREATE TABLE ProductOptionValue AS SELECT DISTINCT * FROM SyncDb.ProductOptionValue');
|
218 |
$db->exec('CREATE TABLE ProductHTML AS SELECT * FROM SyncDb.ProductHTML WHERE ProductExternalReference IN (SELECT ExternalReference FROM SyncDb.ProductChange)');
|
219 |
+
$db->exec('CREATE TABLE ProductRelated AS SELECT * FROM SyncDb.ProductRelated WHERE ProductExternalReference IN (SELECT ExternalReference FROM SyncDb.ProductChange)');
|
220 |
$db->exec('CREATE TABLE Attribute AS SELECT * FROM SyncDb.Attribute');
|
221 |
$db->exec('CREATE TABLE AttributeGroup AS SELECT * FROM SyncDb.AttributeGroup');
|
222 |
$db->exec('CREATE TABLE AttributeGroupMap AS SELECT * FROM SyncDb.AttributeGroupMap');
|
app/code/community/Codisto/Sync/data/codisto_setup/{data-install-1.90.7.php → data-install-1.90.9.php}
RENAMED
File without changes
|
app/code/community/Codisto/Sync/etc/adminhtml.xml
CHANGED
@@ -56,9 +56,14 @@
|
|
56 |
<sort_order>6</sort_order>
|
57 |
<action>adminhtml/codisto/intro</action>
|
58 |
</getstarted>
|
|
|
|
|
|
|
|
|
|
|
59 |
<settings translate="title">
|
60 |
<title>Settings</title>
|
61 |
-
<sort_order>
|
62 |
<action>adminhtml/codisto/settings</action>
|
63 |
</settings>
|
64 |
</children>
|
@@ -97,9 +102,13 @@
|
|
97 |
<title>Getting Started</title>
|
98 |
<sort_order>6</sort_order>
|
99 |
</getstarted>
|
|
|
|
|
|
|
|
|
100 |
<settings>
|
101 |
<title>Settings</title>
|
102 |
-
<sort_order>
|
103 |
</settings>
|
104 |
</children>
|
105 |
</codisto>
|
56 |
<sort_order>6</sort_order>
|
57 |
<action>adminhtml/codisto/intro</action>
|
58 |
</getstarted>
|
59 |
+
<account translate="title">
|
60 |
+
<title>Account</title>
|
61 |
+
<sort_order>7</sort_order>
|
62 |
+
<action>adminhtml/codisto/account</action>
|
63 |
+
</account>
|
64 |
<settings translate="title">
|
65 |
<title>Settings</title>
|
66 |
+
<sort_order>8</sort_order>
|
67 |
<action>adminhtml/codisto/settings</action>
|
68 |
</settings>
|
69 |
</children>
|
102 |
<title>Getting Started</title>
|
103 |
<sort_order>6</sort_order>
|
104 |
</getstarted>
|
105 |
+
<account>
|
106 |
+
<title>Getting Started</title>
|
107 |
+
<sort_order>7</sort_order>
|
108 |
+
</account>
|
109 |
<settings>
|
110 |
<title>Settings</title>
|
111 |
+
<sort_order>8</sort_order>
|
112 |
</settings>
|
113 |
</children>
|
114 |
</codisto>
|
app/code/community/Codisto/Sync/etc/config.xml
CHANGED
@@ -23,7 +23,7 @@
|
|
23 |
<config>
|
24 |
<modules>
|
25 |
<Codisto_Sync>
|
26 |
-
<version>1.90.
|
27 |
<depends>
|
28 |
<Mage_Payment/>
|
29 |
</depends>
|
23 |
<config>
|
24 |
<modules>
|
25 |
<Codisto_Sync>
|
26 |
+
<version>1.90.9</version>
|
27 |
<depends>
|
28 |
<Mage_Payment/>
|
29 |
</depends>
|
app/code/community/Codisto/Sync/sql/codisto_setup/{mysql4-install-1.90.7.php → mysql4-install-1.90.9.php}
RENAMED
File without changes
|
package.xml
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
-
<package><name>codistoconnect</name><version>1.90.
|
1 |
<?xml version="1.0"?>
|
2 |
+
<package><name>codistoconnect</name><version>1.90.9</version><stability>stable</stability><license>OSL-3.0</license><channel>community</channel><extends></extends><summary>Fastest, Easiest eBay listing</summary><description>CodistoConnect enables you to list on eBay in the simplest way possible with maximum performance</description><notes></notes><authors><author><name>Codisto</name><user>Codisto</user><email>hello@codisto.com</email></author></authors><date>2016-08-11</date><time>18:42:48</time><compatible></compatible><dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies><contents><target name="mage"><dir name="app"><dir name="design"><dir name="ebay"><file name="README" hash="8a3f3351f68ccde9f161cdbe3960392f"/></dir></dir><dir name="code"><dir name="community"><dir name="Codisto"><dir name="Sync"><dir name="Helper"><file name="CmsContent.php" hash="f00b4523d681c60c660089d0de0f2e03"/><file name="Data.php" hash="e5db211cdecaace51453f276e3e27268"/><file name="Signal.php" hash="b624f962056ceffae9c3160ed3e5655e"/></dir><dir name="controllers"><file name="CodistoController.php" hash="eccbf167582d60ae559b7455b9b8e7ea"/><file name="IndexController.php" hash="d26acda7db312bf68e7bedce6bc49fc2"/><file name="SyncController.php" hash="337315134c4a86f1aa6b1882e9b64937"/></dir><dir name="Controller"><file name="Router.php" hash="6e5ab9b0012590acf986459b5acec54c"/></dir><dir name="Test"><file name="README" hash="8299e52f9198536ff5fd3fb42f4a29d8"/><dir name="Config"><file name="AdminHtml.php" hash="6ee6404e52ed6376ad41b7556f265c32"/><file name="Config.php" hash="2e9023fcbab484d03936394934f44f13"/><dir name="Config"><dir name="expectations"><file name="testCodistoCoreConfig.yaml" hash="4a4e07f62981139ff6eb8a63420cbf0d"/></dir></dir></dir><dir name="Controllers"><file name="CodistoController.php" hash="a2be4faeac73ff1847c0d7dc4fbdc0e0"/><file name="IndexController.php" hash="f7252fae8d2f7b67397ae56524db49d1"/><file name="SyncController.php" hash="33436e4935631488073765d723a82ff7"/></dir><dir name="Controller"><file name="Router.php" hash="8afc0dca269dd0977ff6b3ac6802d0ee"/></dir><dir name="Model"><file name="Paymentmethod.php" hash="862365909073ffbba057f6f152933826"/><file name="Sync.php" hash="10a38bbb62260208a8b1529e762b7b75"/></dir></dir><dir name="sql"><dir name="codisto_setup"><file name="mysql4-install-1.90.9.php" hash="6d07d4e22ae5d907df1f4389c3a829d4"/></dir></dir><dir name="data"><dir name="codisto_setup"><file name="data-install-1.90.9.php" hash="a42cf5f15b68ac92d4c207bed8472c7d"/></dir></dir><dir name="Block"><file name="PaymentInfo.php" hash="7aa15fed37766d20d9d5a7d707aff80d"/></dir><dir name="Ebaypayment"><dir name="Model"><file name="Paymentmethod.php" hash="480787461a5b952a739f20a752bffb5d"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="c5cdb49f8522fc213c8a65630ffb0cb4"/><file name="config.xml" hash="949b14e70b2528fa5c3ee6f660ddcff4"/></dir><dir name="Model"><file name="Observer.php" hash="8b309ae85f2bf696e97ff6777c1d64f2"/><file name="Sync.php" hash="07662f6eb15475f27edea545a69f72e7"/><dir name="Indexer"><file name="Ebay.php" hash="556b1aabc7c3202f31a2e6c250e7d590"/></dir><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="6a6664ea18d93bcdd0f45530caa56244"/></dir></dir></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><file name="Codisto_Sync.xml" hash="a791bc2a9302d085eb29edf77421f525"/></dir></dir></dir></target></contents></package>
|