Skip to content

Instantly share code, notes, and snippets.

@isyan
Created September 24, 2015 01:55
Show Gist options
  • Save isyan/8616fff1e5e3679db11f to your computer and use it in GitHub Desktop.
Save isyan/8616fff1e5e3679db11f to your computer and use it in GitHub Desktop.

Revisions

  1. isyan created this gist Sep 24, 2015.
    98 changes: 98 additions & 0 deletions price-updater.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,98 @@
    <?php
    /**
    * @author MagePsycho <[email protected]>
    * @website http://www.magepsycho.com
    * @category Export / Import
    */
    $mageFilename = 'app/Mage.php';
    require_once $mageFilename;
    Mage::setIsDeveloperMode(true);
    ini_set('display_errors', 1);
    umask(0);
    Mage::app('admin');
    Mage::register('isSecureArea', 1);
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

    set_time_limit(0);
    ini_set('memory_limit','1024M');

    /***************** UTILITY FUNCTIONS ********************/
    function _getConnection($type = 'core_read'){
    return Mage::getSingleton('core/resource')->getConnection($type);
    }

    function _getTableName($tableName){
    return Mage::getSingleton('core/resource')->getTableName($tableName);
    }

    function _getAttributeId($attribute_code = 'price'){
    $connection = _getConnection('core_read');
    $sql = "SELECT attribute_id
    FROM " . _getTableName('eav_attribute') . "
    WHERE
    entity_type_id = ?
    AND attribute_code = ?";
    $entity_type_id = _getEntityTypeId();
    return $connection->fetchOne($sql, array($entity_type_id, $attribute_code));
    }

    function _getEntityTypeId($entity_type_code = 'catalog_product'){
    $connection = _getConnection('core_read');
    $sql = "SELECT entity_type_id FROM " . _getTableName('eav_entity_type') . " WHERE entity_type_code = ?";
    return $connection->fetchOne($sql, array($entity_type_code));
    }

    function _getIdFromSku($sku){
    $connection = _getConnection('core_read');
    $sql = "SELECT entity_id FROM " . _getTableName('catalog_product_entity') . " WHERE sku = ?";
    return $connection->fetchOne($sql, array($sku));

    }

    function _checkIfSkuExists($sku){
    $connection = _getConnection('core_read');
    $sql = "SELECT COUNT(*) AS count_no FROM " . _getTableName('catalog_product_entity') . " WHERE sku = ?";
    $count = $connection->fetchOne($sql, array($sku));
    if($count > 0){
    return true;
    }else{
    return false;
    }
    }

    function _updatePrices($data){
    $connection = _getConnection('core_write');
    $sku = $data[0];
    $newPrice = $data[1];
    $productId = _getIdFromSku($sku);
    $attributeId = _getAttributeId();

    $sql = "UPDATE " . _getTableName('catalog_product_entity_decimal') . " cped
    SET cped.value = ?
    WHERE cped.attribute_id = ?
    AND cped.entity_id = ?";
    $connection->query($sql, array($newPrice, $attributeId, $productId));
    }
    /***************** UTILITY FUNCTIONS ********************/

    $csv = new Varien_File_Csv();
    $data = $csv->getData('product-masonry-feed.csv'); //path to csv
    array_shift($data);

    $message = '';
    $count = 1;
    foreach($data as $_data){
    if(_checkIfSkuExists($_data[0])){
    try{
    _updatePrices($_data);
    $message .= $count . '> Success:: While Updating Price (' . $_data[1] . ') of Sku (' . $_data[0] . '). <br />';

    }catch(Exception $e){
    $message .= $count .'> Error:: While Upating Price (' . $_data[1] . ') of Sku (' . $_data[0] . ') => '.$e->getMessage().'<br />';
    }
    }else{
    $message .= $count .'> Error:: Product with Sku (' . $_data[0] . ') does\'t exist.<br />';
    }
    $count++;
    }
    echo $message;