User Tools

Site Tools


urapidflow:v3:disable_missing_products

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

urapidflow:v3:disable_missing_products [2017/05/19 19:08] (current)
Line 1: Line 1:
 +====== Disable existing products that missing in the new products feed ======
  
 +<file php urapidflow.php>​
 +<?php
 +// initialize Magento environment
 +use Magento\Framework\ObjectManagerInterface;​
 +
 +try {
 +//    if you move this file, adjust bootstrap.php path
 +    require __DIR__ . '​../​../​../​../​../​app/​bootstrap.php';​
 +} catch (\Exception $e) {
 +    echo <<<​HTML
 +{$e->​getMessage()}
 +</​div>​
 +HTML;
 +    exit(1);
 +}
 +
 +$params = $_SERVER;
 +$params[\Magento\Store\Model\StoreManager::​PARAM_RUN_CODE] = '​admin';​ // change this to appropriate store if needed.
 +$params[\Magento\Store\Model\Store::​CUSTOM_ENTRY_POINT_PARAM] = true;
 +$bootstrap = \Magento\Framework\App\Bootstrap::​create(BP,​ $params); // bootstrap
 +
 +/** @var \Magento\Framework\App\Http $app */
 +$app = $bootstrap->​createApplication('​Magento\Framework\App\Http'​);​
 +
 +// configure environment
 +$om = $bootstrap->​getObjectManager();​
 +$areaList = $om->​get('​Magento\Framework\App\AreaList'​);​
 +$areaCode = $areaList->​getCodeByFrontName('​admin'​);​
 +/** @var \Magento\Framework\App\State $state */
 +$state = $om->​get('​Magento\Framework\App\State'​);​
 +$state->​setAreaCode($areaCode);​
 +/** @var \Magento\Framework\ObjectManager\ConfigLoaderInterface $configLoader */
 +$configLoader = $om->​get('​Magento\Framework\ObjectManager\ConfigLoaderInterface'​);​
 +$om->​configure($configLoader->​load($areaCode));​
 +// end initialize Magento environment
 +
 +// the export file contains SKUs and Status columns
 +// in file var/​urapidflow/​export/​existing_products.csv
 +
 +/** @var \Unirgy\RapidFlow\Helper\Data $helper */
 +$helper = $om->​get('​\Unirgy\RapidFlow\Helper\Data'​);​
 +$helper->​run("​Export Existing Products"​);​
 +
 +// collect new skus from the feed
 +$newSkus = array();
 +
 +// the new products feed
 +$fs = fopen('​var/​urapidflow/​import/​new_feed.csv',​ '​r'​);​
 +$columns = fgetcsv($fs);​ // read column titles
 +while (($r = fgetcsv($fs))) {
 +    $row = array_combine($columns,​ $r);
 +    $newSkus[$row['​sku'​]] = 1;
 +}
 +fclose($fs);​
 +
 +// the existing products export
 +$fs = fopen('​var/​urapidflow/​export/​existing_products.csv',​ '​r'​);​
 +$columns = fgetcsv($fs);​ // read column titles
 +
 +// new file to update products statuses
 +$fd = fopen('​var/​urapidflow/​import/​update_status.csv',​ '​w'​);​
 +fputcsv($fd,​ array('​sku',​ '​status'​));​
 +
 +while (($r = fgetcsv($fs))) {
 +    $row = array_combine($columns,​ $r);
 +
 +// if you're using not English as a store language, change the status text
 +    if (empty($newSkus[$row['​sku'​]]) && $row['​status'​]!='​Disabled'​) {
 +        fputcsv($fd,​ array($row['​sku'​],​ 0));
 +// you can also delete missing products (uRapidFlow Pro)
 +// will require profile "Data Type" = "​Product Extra"
 +//      fputcsv($fd,​ array('​-CP',​ $r['​sku'​]));​
 +    }
 +}
 +fclose($fs);​
 +fclose($fd);​
 +
 +// add and update feed products, uses file var/​urapidflow/​import/​new_feed.csv
 +$helper->​run("​Import Products"​);​
 +
 +// update missing products status, uses file var/​urapidflow/​import/​update_status.csv
 +$helper->​run("​Update Product Status"​);​
 +
 +</​file>​
urapidflow/v3/disable_missing_products.txt · Last modified: 2017/05/19 19:08 (external edit)