Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Magento/Google导入脚本_Php_Magento - Fatal编程技术网

PHP Magento/Google导入脚本

PHP Magento/Google导入脚本,php,magento,Php,Magento,下面的脚本取自另一个堆栈溢出答案 <?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','tit

下面的脚本取自另一个堆栈溢出答案

<?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());
}
我不明白在那一行发生了什么。出于某种原因,剧本正在改变我们的价格

本例的成本价为52.80英镑,零售价为56.54英镑。该脚本的价格为61.54英镑

剧本应该包括价格(56.54英镑)和增值税(20%)。因此,一旦脚本运行完毕,结果文本文件中的价格应为67.85英镑

A) 价格线实际上在做什么?
B) 如何将其更改为价格的20%。

价格行将
$product->getPrice()
值四舍五入到小数点后两位,再加上5,然后将值赋给
$product\u数据['price']

要将一个数字自身增加一个百分比,例如20%,您可以将该数字自身乘以您想要的百分比(作为1的分数):

因此,要获得最终的四舍五入数字,请使用
round

$rounded_with_vat_number = round(($no_vat_number * 1.20), 2);

另一种让您的价格在Google Feed中显示为包含增值税的方式是替换以下内容:

$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;(当然没有引号!)

这看起来真的很奇怪。你是从哪个答案中得到的?我编辑了字段等。但是脚本几乎是一字不差的。我刚刚计算出它在添加5,但我没有意识到它在向上取整。所以我用$product_data['price']=round($product->getPrice(),2)*1.2;这会导致5位数的价格(67.848)。有什么原因它会忽略舍入吗?这是因为你要舍入一个整数,然后乘以一个非整数,所以精确的结果是返回。你需要添加百分比,然后舍入。我更新了答案以澄清这一点。
$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);