PHP Magento / Google скрипт импорта - PullRequest
0 голосов
/ 03 октября 2011

У меня есть следующий сценарий, взятый из другого ответа переполнения стека.

<?php
define('SAVE_FEED_LOCATION','google_base_feed.txt');
set_time_limit(1800);
require_once '../app/Mage.php';
Mage::app('default');
try{
    $handle = fopen(SAVE_FEED_LOCATION, 'w');

    $heading = array('id','mpn', 'upc','title','description','link','image_link','price','brand','product_type','condition', 'google_product_category', 'manufacturer', 'availability');
    $feed_line=implode("\t", $heading)."\r\n";
    fwrite($handle, $feed_line);

    $products = Mage::getModel('catalog/product')->getCollection();
    $products->addAttributeToFilter('status', 1);
    $products->addAttributeToFilter('visibility', 4);
    $products->addAttributeToSelect('*');
    $prodIds=$products->getAllIds();

    $product = Mage::getModel('catalog/product');

    $counter_test = 0;

    foreach($prodIds as $productId) {

        if (++$counter_test < 30000){

            $product->load($productId);

            $product_data = array();
            $product_data['sku'] = $product->getSku();
            $product_data['mpn'] = $product->getData('upc');
            $product_data['upc'] = $product->getData('upc');

            $title_temp = $product->getName();
            if (strlen($title_temp) > 70){
                $title_temp = str_replace("Supply", "", $title_temp);
                $title_temp = str_replace("  ", " ", $title_temp);
            }
            $product_data['title'] = $title_temp;


            $product_data['description'] = substr(iconv("UTF-8","UTF-8//IGNORE",$product->getDescription()), 0, 900);
            $product_data['Deeplink'] = "http://www.myshop.co.uk/store/".$product->getUrlPath(); 
            $product_data['image_link'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product->getImage();

            $price_temp = round($product->getPrice(),2);
            $product_data['price'] = round($product->getPrice(),2) + 5;

            $product_data['brand'] = $product->getData('brand');

            $product_data['product_type'] = 'Pet Products and Accessories';
            $product_data['condition'] = "new";
            $product_data['category'] = $product_data['brand'];
            $product_data['manufacturer'] = $product_data['brand'];

            $product_data['availability'] = "in stock";

            foreach($product_data as $k=>$val){
                $bad=array('"',"\r\n","\n","\r","\t");
                $good=array(""," "," "," ","");
                $product_data[$k] = '"'.str_replace($bad,$good,$val).'"';
            }

            echo $counter_test  . " ";

            $feed_line = implode("\t", $product_data)."\r\n";
            fwrite($handle, $feed_line);
            fflush($handle);

        }

    }

    fclose($handle);
}
catch(Exception $e){
    die($e->getMessage());
}

Если вы посмотрите на раздел, который ищет цену продукта:

$product_data['price'] = round($product->getPrice(),2) + 5;

Я непонять, что происходит в этой линии.По какой-то причине скрипт меняет нашу цену.

Себестоимость этого примера составляет 52,80 фунтов стерлингов, а розничная цена - 56,54 фунтов стерлингов.Сценарий приводит к цене 61,54 фунта.

. Сценарий должен брать цену (56,54 фунта) и добавлять НДС (20%).Таким образом, после запуска сценария цена в текстовом файле должна составлять £ 67,85.

A) Что в действительности делает ценовая линия?Б) Как я могу изменить это, чтобы добавить 20% к цене?

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Линия цены округляется до значения $product->getPrice() до двух десятичных знаков, добавляя 5, а затем присваивая значение $product_data['price'].

Чтобы увеличить число на процент от себя, скажем, на 20%, вы умножаете число на себя плюс процент, который хотите (в виде доли 1):

$with_vat_number = $no_vat_number * 1.20;

Чтобы получить окончательное округленное число, используйте round:

$rounded_with_vat_number = round(($no_vat_number * 1.20), 2);
0 голосов
/ 08 октября 2013

Другой способ сделать так, чтобы ваши цены в вашей ленте Google включали НДС, - это заменить ниже:

$price_temp = round($product->getPrice(),2);
$product_data['price'] = round($product->getPrice(),2) + 5;

с кодом ниже:

//VAT Stuff
$vat = 20; //percent
$pvat = $vat / 100;
$product_data['price']= round( ($product->getPrice() + $product->getPrice() * $pvat),2);

Таким образом, когда изменяется сумма НДС, вместо того, чтобы вычислять дроби и т. Д., Просто измените "$ vat = 20; на любой новый процент НДС. Поэтому, когда он уменьшается до 17,5, вы меняете код на «$ vat = 17,5;» (без кавычек с курса!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...