Problèmes liés à la mise en place de frais de livraison
-
12-12-2019 - |
Question
J'ai deux options pour commander un produit.
- Ramassez-vous vous-même (Works)
- Livraison, commander en dessous de 30 ans, vous devez payer 7, - et plus, il n'y a pas de frais de livraison:
J'utilise des tableates pour cela.J'ai téléchargé un CSV et il est correctement fait:
Land,Provincie,Postcode,"Subtotaal bestelling (en hierboven)",Verzendkosten *,*,*,0.0000,7.0000 *,*,*,30.0000,0.0000
condition;Prix vs emplacement
Lorsque je commande en dessous de 30 ans, il ajoute 7, - c'est Oké
mais quand je commande au-dessus de 30, - (sous-total), il ajoute toujours le 7, - J'ai effacé le cache, etc. Y a-t-il quelque chose que j'aurais pu manquer?
version 1.7.0.2
La solution
Le problème peut être la taxe. Si vous commandez quelque chose pour 35 $, vos impôts sont de 21%, il calcule le total de la commande de 27.25.Donc, il ne correspond pas à votre taux d'expédition gratuit.
in app / code / noyau / mage / expédition / modèle / porteur / flatrate.php Ajouter le code suivant (autour de la ligne 104)
// exclude Virtual products price from Package value if pre-configured
if (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) {
foreach ($request->getAllItems() as $item) {
if ($item->getParentItem()) {
continue;
}
if ($item->getHasChildren() && $item->isShipSeparately()) {
foreach ($item->getChildren() as $child) {
if ($child->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValue() - $child->getBaseRowTotal());
}
}
} elseif ($item->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValue() - $item->getBaseRowTotal());
}
}
}
//////////// add this piece of code ////////////
if (Mage::helper('tax')->priceIncludesTax()) {
$taxableAmount = 0;
foreach ($request->getAllItems() as $item) {
$taxableAmount += $item->getTaxableAmount();
}
$request->setPackageValue($taxableAmount);
//////////// till here ////////////
}
// Free shipping by qty
$freeQty = 0;
if ($request->getAllItems()) {
$freePackageValue = 0;
Ce sont les tarifs im en utilisant pour un costumateur, ils avaient les mêmes problèmes.Lorsqu'un costumateur a commandé quelque chose pour 52,95, l'expédition n'était pas gratuite, après avoir ajouté le code ci-dessus, il était
Land,Provincie,Postcode,"Subtotaal bestelling (en hierboven)",Verzendkosten
BEL,*,*,0.0000,6.9500
BEL,*,*,49.9900,0.0000
DEU,*,*,0.0000,4.9500
DEU,*,*,49.9900,0.0000
NLD,*,*,0.0000,4.9500
NLD,*,*,49.9900,0.0000