nursit / livraison

Plugin de frais de la livraison pour SPIP. Plugin archivé, voir git.spip.net pour une version à jour
https://git.spip.net/spip-contrib-extensions/livraison
1 stars 4 forks source link

Livraisons partielles : mode de livraison proposé même si applicable à aucune ligne #7

Closed tokiop closed 5 years ago

tokiop commented 5 years ago

Bonjour Nursit et all !

merci pour ce plugin ! Peut être un bug, découvert sur une situation un peu spécifique, résumée comme ça :

A la commande des deux produits, deux choix de livraisons sont proposés :

Il semble que mode3 est traité comme "partiel" même s'il n'est applicable à aucune ligne. Cela produit des "livraisons possibles" supplémentaires.

En modifiant cette vérifications dans inc/livraison.php comme ceci, le comportement semble corrigé :

// verifier que le mode est applicable a toutes les lignes de la commande
$partiellement_applicable = false;
foreach($details as $k => $detail){
    // si on a fourni une liste $partiel des details a livrer,
    // on accepte une livraison partielle en renvoyant la liste des id non livres
    if (!livraison_applicable($detail['objet'],$detail['id_objet'],$id_livraisonmode)) {
        if ($partiel) {
            $id_non_livres[] = $detail['id_commandes_detail'];
            unset($details[$k]);
        }
        else {
            return false;
        }
    }else{
        $partiellement_applicable = true;
    }
}

// verifier que le mode est applicable a au moins une ligne de la commande
if (!$partiellement_applicable) return false;

Une variable est ajoutée pour vérifier que la livraison courante est applicable à au moins une ligne de la commande, sinon elle est retournée directement comme invalide.

Sans cette modif, le traitement se poursuit et le mode de livraison "fantôme" est retourné comme possible, avec ses frais fixes éventuels, même si il n'est utilisée pour aucun produit.

Est ce que cette modif vous semble logique ? Elle n'est pas encore beaucoup testée, j'ai pu manquer quelque chose dans la logique des appels des fonctions de livraison..

bonne journée !

Cerdic commented 5 years ago

Merci, ça me parait très juste et c'est intégré !