Jump to content

URL Rewriting & "Invalid address" exception


Recommended Posts

Bonjour à tous !

Je vous soumets ici deux problèmes que je rencontre actuellement sur ma boutique Prestashop.

 

Premièrement l'URL Rewriting ne fonctionne pas pour les fiches produits, voici ce que contient mon champ Route vers les produits :

 

{category:/}{rewrite}-p-{id}.html 

 

et voici un exemple d'url générée :

 

http://monsite.fr/fr/accessoires-baladeurs/iPodTest-p-8190-p-8190.html

 

J'ai donc 2 fois la règle p-{id} qui est appliquée. J'ai ré-indexé toute ma base de produits mais cela n'a rien changé.

 

Deuxièmement je ne peux pas accéder aux produits (cette erreur n'est pas liée à celle du dessus car elle est apparue bien après), un screenshot de la page est en pièce jointe avec la stack trace

 

EDIT :

  • L'erreur qui m'indique une adresse invalide se produit uniquement lorsque je suis connecté, pour les utilisateurs non connectés il n'y a aucune erreur.
  • Je ne comprends pas pourquoi lorsque je charge une fiche produit le ProductController essaie de trouver le prix de l'écotaxe alors que celle-ci n'est pas activée dans le panneau d'administration.
  • De plus j'ai l'impression que le montant de l'écotaxe est basé sur l'adresse de livraison du client donc comment le ProductController pourrait calculer un montant si aucune adresse n'est renseignée (sachant que le client n'est pas obligé de renseigner une adresse pour créer sont compte).

Si vous avez un petit coup de pouce pour m'éclairer je vous en serais reconnaissant :)

 

Cordialement

post-806191-0-95744000-1402581154_thumb.png

Edited by Frénésie (see edit history)
Link to comment
Share on other sites

J'ai trouvé une solution pour le problème d'adresse invalide, j'ai modifié la ligne 303 du ProductController.php

$ecotax_rate = (float)Tax::getProductEcotaxRate($this->context->cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')});

par

$ecotax_rate = (float)Tax::getProductEcotaxRate(new Address((int)$this->context->cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}));

ainsi que la fonction getProductEcotaxRate de la classe Tax.php

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();
}

par

public static function getProductEcotaxRate(Address $address = null)
{
if (!$address || !$address->id_country)
    $address = Address::initialize();

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

return $tax_calculator->getTotalRate();
}
Edited by Frénésie (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...