Jump to content

(SOLUCIONADO) error al poner descuentos


ElectroCrisan

Recommended Posts

en la pestaña pedido cuando entro en un pedido concreto abajo del todo a la derecha puedo poner descuentos o quitar los portes o poner un porcentaje de descuento

el caso es que cuando quiero poner un descuento por importe me sale este error

y ya no se que hacer para solucionarlo

 

 

Catchable fatal error: Argument 3 passed to TaxCore::getProductTaxRate() must be an instance of Context, boolean given, called in /var/www/vhosts/electrocrisan.com/httpdocs/override/classes/tax/Tax.php on line 20 and defined in /var/www/vhosts/electrocrisan.com/httpdocs/classes/tax/Tax.php on line 252

Edited by ElectroCrisan (see edit history)
Link to comment
Share on other sites

en la pestaña pedido cuando entro en un pedido concreto abajo del todo a la derecha puedo poner descuentos o quitar los portes o poner un porcentaje de descuento

el caso es que cuando quiero poner un descuento por importe me sale este error

y ya no se que hacer para solucionarlo

 

 

Catchable fatal error: Argument 3 passed to TaxCore::getProductTaxRate() must be an instance of Context, boolean given, called in /var/www/vhosts/electrocrisan.com/httpdocs/override/classes/tax/Tax.php on line 20 and defined in /var/www/vhosts/electrocrisan.com/httpdocs/classes/tax/Tax.php on line 252

 

¿Una preguntllla, tu has instalado "algo" o tienes un módulo que haya instalado este override:

 

/override/classes/tax/Tax.php

 

? (Lo digo, porque el override no aparece de pronto hay)

Link to comment
Share on other sites

Lo que puedes hacer por ahora es eliminar el fichero:

 

/override/classes/tax/Tax.php

 

(Un override es una modificación del fichero original sin modificar el fichero original, que es lo que tienes en tu caso) si borras el:

 

/override/classes/tax/Tax.php

 

automaticamente, prestashop, trabajara con el fichero:

 

/classes/tax/Tax.php

 

¿Por que tienes el override "/override/classes/tax/Tax.php"?

 

Normalmente es debido a algun módulo, o alguna implementación que te hayan "echo", por eso te dije que me pegaras el código, ya que es posible que ese override este hay por algo en concreto.

Link to comment
Share on other sites

<?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);

}

}

Link to comment
Share on other sites

Ok, ese override se te ha instalado porque has instalado el modulo:

 

AvaTax

 

en la pestaña módulos - módulos (conscientemente o inconscientemente)

 

Lo extraño es que te haya generado ese override (lo digo por que no es correcto), cuando a mi el módulo me ha generado este override:

 

<?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, Context $context = 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, $context);
 /* 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, null, true);
}
}

 

¿Que versión del módulo:

 

AvaTax

usas (Lo puedes ver en la pestaña módulos - módulos) ?

Link to comment
Share on other sites

esta desactivado el modulo avalara

si quieres pruebo a desistalarlo

pero creo que me dio error si desistalaba quizas tenga que eliminarlo por completo

Pues entonces elimina directamente el fichero (override) en cuestión. xD (Porque sino estas usando el módulo que te he comentado, ese fichero (override) "sobra") (Solo ese override, no borres nada mas)

 

Añado:

 

Si desinstalas el modulo "avalara" que ahora comentas que lo tienes desactivado, supongo que se vaciara o borrara directamente el override.

Link to comment
Share on other sites

gracias y doy el tema por solucionado solo me hizo falta eliminar el avalara

 

y ya se quedo asi

 

<?php

 

class Tax extends TaxCore

{

 

/**

* Return the product tax

*

* @param integer $id_product

* @param integer $id_address

* @return Tax Rate

*/

 

}

Link to comment
Share on other sites

gracias y doy el tema por solucionado solo me hizo falta eliminar el avalara

 

y ya se quedo asi

 

<?php

 

class Tax extends TaxCore

{

 

/**

* Return the product tax

*

* @param integer $id_product

* @param integer $id_address

* @return Tax Rate

*/

 

}

 

 

Un placer ayudarte y servirte!

 

Si das el tema como solucionado, edita el titulo del tema, editando el primer mensaje, pulsando en editar, y después en "Usar editor completo", añadiendo la palabra "Solucionado" al titulo, esto ayudara, a mantener una mayor organización en el foro.

 

Un saludo y recuerda que estaremos en el foro, para guiarte por este mundo oscuro y tenebroso.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...