THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 digressive price pour 2.5

(25-01-2023 12:48:15)


Bonjour,
j'essaie de modifier le module https://github.com/roadster31/digressiveprice/ pour le rendre compatible avec la 2.5.
Je galère avec les methodes de callback dans le fichier Form/CreateDigressivePriceForm.php
Si je commente les appel à ces methodes,
dans le BO, j'arrive à faire afficher les champs de saisie et à saisir des prix dégressif.
Coté FO, ceux-ci s'affichent bien sur le product,
et le prix est bien calculé dans le panier (avec un petit ajout dans le listener).

J'ai essayé de regarder sur les autres modules,
il doit y avoir quelque chose de nouveau que je ne comprend pas ou ne connais pas,
je reçois ce message d'erreur :

{"methods":[[{},"fromNotInRange"]]} targeted by Callback constraint is not a valid callable.

Une des métodes concernée :

    public function fromNotInRange($value, ExecutionContextInterface $context, $isUpdating = false)
    {
        $digressivePrices = $this->inRangeQuery($value, $isUpdating);

        if (count($digressivePrices) !== 0) {
            $context->addViolation($this->translator->trans('Your new range begins in another one', [], DigressivePrice::DOMAIN.'.bo.default'));
        }
    }

Last edited by vz777 (25-01-2023 13:05:05)

Offline


As-tu jeter un coup d'oeil du côté de ce module : TieredPricing ?

Offline


Oui je l'avais repéré celui-la !

Mais tieredpricing ne correspond pas à mon besoin, les dégressifs sont des pourcentages par tranche,
et il n'y a pas de loop pour faire afficher les prix coté front.
J'avais essayé d'ajouter une loop il a quelques jours, mais je n'ai pas encore le level pour ça, je n'y étais pas arrivé.

Et puis comme j'utilise déja digressiveprice en 2.4 qui correspond à mon besoin,
j'ai fini par me dire que ce serait sans doute plus facile de modifier celui-ci.

La ou je pige pas,
c'est que dans les modules 2.5 ou il y a des callback sur des forms,
le seul truc que je vois qui change, c'est qu'on enleve   "methods" => array( pour obtenir par exemple :

                    new Constraints\Callback(
                        array( $this, "fromNotInRange")
                    )
                ),
               "label" => $this->translator->trans('FROM {quantity}', [], DigressivePrice::DOMAIN.'.bo.default')
            )
        )

c'est ce que je viens de faire et je me prends :

DigressivePrice\Form\CreateDigressivePriceForm::fromNotInRange(): Argument #2 ($context) must be of type Symfony\Component\Validator\ExecutionContextInterface, Symfony\Component\Validator\Context\ExecutionContext given, called in /../../../../vendor/symfony/validator/Constraints/CallbackValidator.php on line 43

Je comprends ce que me dit le message mais c'est incompréhensible ce que l'on me sort puisqu'on donne bien du ExecutionContextInterface en parametre  :

    public function fromNotInRange($value, ExecutionContextInterface $context, $isUpdating = false) 

Last edited by vz777 (25-01-2023 18:42:41)

Offline


Bon du coup,
je ne suis pas arrivé réecrire ces callbacks.

En soit le module fonctionne, mais on peut saisir des plages qui se chevauchent.

Si quelqu'un à le gout de regarder https://github.com/vz777/digressiveprice/tree/main
et de m'expliquer ce que ne vois pas.

Autre chose, il est possible que j'ai mal fait quelque chose, ne pas hésiter à me dire si j'ai pu mal faire.

Offline


Je suis en train de porter ce module en 2.5


OpenStudio Toulouse

Offline


Oh, super nouvelle !