Jump to content

Problème prix de livraison HT


g_escande81

Recommended Posts

Bonjour,

J'ai surchargé la methode getPackageShippingCost de la classe Cart.

Pour modifier le prix de livraison pour une catégorie de produit.

Le problème c'est que du coup le prix de livraison est HT et non TTC

Que dois-je rajouter pour qu'il soit TTC ? avec calcul de TVA et TOTAL HT juste

 

Voici la fonction

Précision dans prestashop les livraison $dpd et $socolissimo sont bien à 20 %, j'ai du mal à  comprendre pourquoi ça n'est pas pris en compte.

        public function getPackageShippingCost($id_carrier = null, $use_tax = true, Country $default_country = null, $product_list = null, $id_zone = null)
    {        
        $shipping_cost=parent::getPackageShippingCost($id_carrier, $use_tax, $default_country, $product_list, $id_zone);
        if (!is_null($product_list)) {
    
            foreach ($product_list as $key => $value) {
            $carrierload=Carrier::getCarrierByReference(26);//So Colissimo
            $socolissimo=$carrierload->id;
            $carrierload=Carrier::getCarrierByReference(140);//DPD
            $dpd=$carrierload->id;
            $carrierload=Carrier::getCarrierByReference(85);// Colissimo etranger
            $colissimoetranger=$carrierload->id;
            
                if ($value['id_category_default'] == 45 && ($id_carrier==$dpd || $id_carrier==$socolissimo)) {
                 $shipping_cost = 9.95;
                
                }elseif ($value['id_category_default'] == 45 && ($id_carrier==$colissimoetranger)) {
                    $shipping_cost =40;
                }
            }
        }

        return $shipping_cost;
    }

 Avez vous une idée ?

Merci de m'aider.

 

Cordialement


 

 

 

 

Link to comment
Share on other sites

c'est la fonction 

getPackageShippingCost()

Qui calcule le prix avec tva, mais vu que vous écrivez le prix en dur dans le code la tva ne sera jamais appliquée...

Vous feriez mieux d'overrider getPackageShippingCost^^

Link to comment
Share on other sites

regardez comment est construite l'originale svp^^

Là vous appelez parent:: et juste derrière vous écrasez si ce sont vos transporteurs particuliers.

Donc il suffit de modifier à l'endroit où prestashop récupère les prix par tranche.

Link to comment
Share on other sites

MErci oui en tout cas j'ai repris la fonction en entier dans le override et j'ai inséré mon code après

// Additional Shipping Cost per product
        foreach ($products as $product) {
            if (!$product['is_virtual']) {
                $shipping_cost += $product['additional_shipping_cost'] * $product['cart_quantity'];
          //DEB modif quatrys pour le vin
            $carrierload=Carrier::getCarrierByReference(26);//So Colissimo
            $socolissimo=$carrierload->id;
            $carrierload=Carrier::getCarrierByReference(140);//DPD
            $dpd=$carrierload->id;
            $carrierload=Carrier::getCarrierByReference(85);// Colissimo etranger
            $colissimoetranger=$carrierload->id;
            
                if ($product['id_category_default'] == 45 && ($id_carrier==$dpd || $id_carrier==$socolissimo)) {
                 $shipping_cost = 8.29;
                }elseif ($product['id_category_default'] == 45 && ($id_carrier==$colissimoetranger)) {
                    $shipping_cost =33.33;
                }
            //FIN modif quatrys pour le vin
          }
            
            
        }

 

Et ça fonctionne ! SUper !

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

oui mais non^^

Là vous êtes dans la boucle foreach par produit (pour les frais supplémentaires) ce qui fait que votre code est appelé pour chaque produit de la commande.

Vous devriez vous mettre juste avant ce foreach pour n'appeler votre code qu'une fois et aussi pour permettre justement d'ajouter des frais de port additionnels s'il y en avait^^

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...