2013-03-25 107 views
0

我有一个很大的问题。注册用户无法添加到购物车。 Prestashop

这个问题已经谈了好几次,但我不能得到它的工作...

我tryed一切有关的Prestashop论坛建议(也贴了,但仍然没有回答): 1.更改商店域名和SSL。 首先,我把它作为growmundocannabico.com(在这两个地方,没有工作),改为www.growmundocannabico.com,仍然没有解决问题。

  1. 清除coockies和所有浏览器历史记录(firefox),没有解决问题。 P.D.在其他浏览器上也不起作用。经过Chrome和IE10测试。

  2. Tryed修改.htcacess文件,没有帮助......

这里是店网址:www.growmundocannabico.com

我已经改变了定义( '_ PS_MODE_DEV_',假);定义('_ PS_MODE_DEV_',true);在config/define.inc.php中显示错误。结果是附件。

任何人都可以解释我为什么这是什么意思,我应该怎么做才能解决它?因为编程不是我的强项。

感谢,enter image description here

下面是代码:我不明白 1行20是* 2.没有PHP是不是封闭的,它应该是这样呢?

<?php 
/* 
* 2007-2012 PrestaShop 
* 
* NOTICE OF LICENSE 
* 
* This source file is subject to the Open Software License (OSL 3.0) 
* that is bundled with this package in the file LICENSE.txt. 
* It is also available through the world-wide-web at this URL: 
* http://opensource.org/licenses/osl-3.0.php 
* If you did not receive a copy of the license and are unable to 
* obtain it through the world-wide-web, please send an email 
* to [email protected] so we can send you a copy immediately. 
* 
* DISCLAIMER 
* 
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer 
* versions in the future. If you wish to customize PrestaShop for your 
* needs please refer to http://www.prestashop.com for more information. 
* 
* @author PrestaShop SA <[email protected]> 
* @copyright 2007-2012 PrestaShop SA 
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) 
* International Registered Trademark & Property of PrestaShop SA 
*/ 


class TaxCore extends ObjectModel 
{ 
    /** @var string Name */ 
    public $name; 

    /** @var float Rate (%) */ 
    public $rate; 

    /** @var bool active state */ 
    public $active; 

    /** @var boolean true if the tax has been historized */ 
    public $deleted = 0; 

    /** 
    * @see ObjectModel::$definition 
    */ 
    public static $definition = array(
     'table' => 'tax', 
     'primary' => 'id_tax', 
     'multilang' => true, 
     'fields' => array(
      'rate' =>   array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true), 
      'active' =>   array('type' => self::TYPE_BOOL), 
      'deleted' =>  array('type' => self::TYPE_BOOL), 

      // Lang fields 
      'name' =>   array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 32), 
     ), 
    ); 


    protected static $_product_country_tax = array(); 
    protected static $_product_tax_via_rules = array(); 

    protected $webserviceParameters = array(
     'objectsNodeName' => 'taxes', 
    ); 

    public function delete() 
    { 
     /* Clean associations */ 
     TaxRule::deleteTaxRuleByIdTax((int)$this->id); 

     if ($this->isUsed()) 
      return $this->historize(); 
     else 
      return parent::delete(); 
    } 

    /** 
    * Save the object with the field deleted to true 
    * 
    * @return bool 
    */ 
    public function historize() 
    { 
     $this->deleted = true; 
     return parent::update(); 
    } 

    public function toggleStatus() 
    { 
     if (parent::toggleStatus()) 
      return $this->_onStatusChange(); 

     return false; 
    } 

    public function update($nullValues = false) 
    { 
     if (!$this->deleted && $this->isUsed()) 
     { 
      $historized_tax = new Tax($this->id); 
      $historized_tax->historize(); 

      // remove the id in order to create a new object 
      $this->id = 0; 
      $this->add(); 

      // change tax id in the tax rule table 
      TaxRule::swapTaxId($historized_tax->id, $this->id); 
     } else if (parent::update($nullValues)) 
       return $this->_onStatusChange(); 

     return false; 
    } 

    protected function _onStatusChange() 
    { 
     if (!$this->active) 
      return TaxRule::deleteTaxRuleByIdTax($this->id); 

     return true; 
    } 

    /** 
    * Returns true if the tax is used in an order details 
    * 
    * @return bool 
    */ 
    public function isUsed() 
    { 
     return Db::getInstance()->getValue(' 
     SELECT `id_tax` 
     FROM `'._DB_PREFIX_.'order_detail_tax` 
     WHERE `id_tax` = '.(int)$this->id 
     ); 
    } 

    /** 
    * Get all available taxes 
    * 
    * @return array Taxes 
    */ 
    public static function getTaxes($id_lang = false, $active_only = true) 
    { 
     $sql = new DbQuery(); 
     $sql->select('t.id_tax, t.rate'); 
     $sql->from('tax', 't'); 
     $sql->where('t.`deleted` != 1'); 

     if ($id_lang) 
     { 
      $sql->select('tl.name, tl.id_lang'); 
      $sql->leftJoin('tax_lang', 'tl', 't.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)$id_lang); 
      $sql->orderBy('`name` ASC'); 
     } 

     if ($active_only) 
      $sql->where('t.`active` = 1'); 

     return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); 
    } 

    public static function excludeTaxeOption() 
    { 
     static $ps_tax = null; 
     if ($ps_tax === null) 
      $ps_tax = Configuration::get('PS_TAX'); 

     return !$ps_tax; 
    } 

    /** 
    * Return the tax id associated to the specified name 
    * 
    * @param string $tax_name 
    * @param boolean $active (true by default) 
    */ 
    public static function getTaxIdByName($tax_name, $active = 1) 
    { 
     $tax = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' 
      SELECT t.`id_tax` 
      FROM `'._DB_PREFIX_.'tax` t 
      LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (tl.id_tax = t.id_tax) 
      WHERE tl.`name` = \''.pSQL($tax_name).'\' '. 
      ($active == 1 ? ' AND t.`active` = 1' : '')); 

     return $tax ? (int)($tax['id_tax']) : false; 
    } 

    /** 
    * Returns the ecotax tax rate 
    * 
    * @param id_address 
    * @return float $tax_rate 
    */ 
    public static function getProductEcotaxRate($id_address = null) 
    { 
     $address = Address::initialize($id_address); 

     $tax_manager = TaxManagerFactory::getManager($address, (int)Configuration::get('PS_ECOTAX_TAX_RULES_GROUP_ID')); 
     $tax_calculator = $tax_manager->getTaxCalculator(); 

     return $tax_calculator->getTotalRate(); 
    } 

    /** 
    * Returns the carrier tax rate 
    * 
    * @param id_address 
    * @return float $tax_rate 
    */ 
    public static function getCarrierTaxRate($id_carrier, $id_address = null) 
    { 
     $address = Address::initialize($id_address); 
     $id_tax_rules = (int)Carrier::getIdTaxRulesGroupByIdCarrier((int)$id_carrier); 

     $tax_manager = TaxManagerFactory::getManager($address, $id_tax_rules); 
     $tax_calculator = $tax_manager->getTaxCalculator(); 

     return $tax_calculator->getTotalRate(); 
    } 

    /** 
    * Return the product tax rate using the tax rules system 
    * 
    * @param integer $id_product 
    * @param integer $id_country 
    * @return Tax 
    * 
    * @deprecated since 1.5 
    */ 
    public static function getProductTaxRateViaRules($id_product, $id_country, $id_state, $zipcode) 
    { 
     Tools::displayAsDeprecated(); 

     if (!isset(self::$_product_tax_via_rules[$id_product.'-'.$id_country.'-'.$id_state.'-'.$zipcode])) 
     { 
      $tax_rate = TaxRulesGroup::getTaxesRate((int)Product::getIdTaxRulesGroupByIdProduct((int)$id_product), (int)$id_country, (int)$id_state, $zipcode); 
      self::$_product_tax_via_rules[$id_product.'-'.$id_country.'-'.$zipcode] = $tax_rate; 
     } 

     return self::$_product_tax_via_rules[$id_product.'-'.$id_country.'-'.$zipcode]; 
    } 

    /** 
    * Returns the product tax 
    * 
    * @param integer $id_product 
    * @param integer $id_country 
    * @return Tax 
    */ 
    public static function getProductTaxRate($id_product, $id_address = null, Context $context = null) 
    { 
     if ($context == null) 
      $context = Context::getContext(); 

     $address = Address::initialize($id_address); 
     $id_tax_rules = (int)Product::getIdTaxRulesGroupByIdProduct($id_product, $context); 

     $tax_manager = TaxManagerFactory::getManager($address, $id_tax_rules); 
     $tax_calculator = $tax_manager->getTaxCalculator(); 

     return $tax_calculator->getTotalRate(); 
    } 
} 

这里是覆盖。

<?php 

class Tax extends TaxCore 
{ 

    /** 
    * Return the product tax 
    * 
    * @param integer $id_product 
    * @param integer $id_address 
    * @return Tax Rate 
    */ 
    public static function getProductTaxRate($id_product, $id_address = null, $getCarrierRate = false) 
    { 
     include_once(_PS_ROOT_DIR_.'/modules/avalaratax/avalaratax.php'); 

     /* Instanciate the Avalara module and check if active */ 
     $avalara = new AvalaraTax(); 
     if (!$avalara->active) 
      return parent::getProductTaxRate($id_product, $id_address, $getCarrierRate); 

     /* With Avalara, we disable the tax for non logged users */ 
     if (!(int)$id_address) 
      return 0.; 

     $region = Db::getInstance()->getValue('SELECT s.`iso_code` 
            FROM '._DB_PREFIX_.'address a 
            LEFT JOIN '._DB_PREFIX_.'state s ON (s.`id_state` = a.`id_state`) 
            WHERE a.`id_address` = '.(int)$id_address); 

     /* If the Merchant does not want to calculate taxes outside his state and we are outside the state, we return 0 */ 
     if ((!empty($region) && $region != Configuration::get('AVALARATAX_STATE') && !Configuration::get('AVALARATAX_TAX_OUTSIDE'))) 
      return 0.; 

     return (float)Db::getInstance()->getValue('SELECT ac.`tax_rate` 
     FROM '._DB_PREFIX_.'avalara_'.($getCarrierRate ? 'carrier' : 'product').'_cache ac 
     WHERE ac.`id_'.($getCarrierRate ? 'carrier' : 'product').'` = '.(int)$id_product.' 
     AND ac.`region` = \''.pSQL($region).'\''); 
    } 

    public static function getCarrierTaxRate($id_carrier, $id_address = NULL) 
    { 
     return (float)self::getProductTaxRate($id_carrier, $id_address, true); 
    } 
} 

回答

0

该错误似乎在您的重写“税”类。它做了什么,为什么在那里?它不是标准Prestashop的一部分,所以错误很可能在那里。如错误消息所示,该代码中的某些内容使用无效参数调用getProductTaxRate()。

+0

我已经删除了创建的女巫。只剩下原来的问题......问题仍然存在...... :(很显然,这与税收有些奇怪,我也注意到,当我登录时,税收就消失了......发生了什么事?税收设置,规则也设置为西班牙... – 2013-03-25 21:25:27

+0

您是否删除了重写类? – NilsH 2013-03-25 21:27:13

+0

我在哪里可以找到它?,我现在迷了...我现在正在寻找解决方案几个小时... – 2013-03-25 21:30:01