Jump to content

Edit History

prestaconfig

prestaconfig


Le post a été modifié avec les solutions.

Bonjour,

Nous souhaitons pouvoir modifier des commandes, c'est à dire, ajouter/supprimer 1 ou plusieurs produits sur des commandes.

En consultant la documentation officielle, nous avons remarqué qu'il s'agit d'une fonctionnalité native de la 1.7 : 
https://docs.prestashop-project.org/1.7-documentation/v/french/guide-utilisateur/vendre/gerer-commandes/gerer-page-commande/modifier-commande
https://github.com/PrestaShop/user-documentation-en/blob/master/user-guide/selling/managing-orders/order-page-management/editing-order.md

Problème : 

- Le bouton "Ajouter un produit" pour modifier la commande n'apparaît pas dans le back office quand il s'agit d'une commande ayant déjà une facture et ce qu'elle que soit le statut.

La demande : 

- Avez-vous une solution pour voir apparaître le bouton "Ajouter un produit" sur l'édition des commandes sur la version PS 1.7.8.9 ?

- Réalisez vous cette manipulation directement depuis la BDD ?

Nous utiliserons la solution de Prestools et verrons si nous devons passer par un module payant mais c'est toutefois dommage si cette fonctionnalité est native.

Constats:

- La fonctionnalité était déjà présente en 1.6 et censé l'être depuis la 1.7.X mais le bouton "ajouter un produit" n'est pas présent dans le BO des commandes dans la 1.7.8.X. 

- PS 1.5 : Des pistes intéressantes ont été données dans ce post ou devait être réalisé des modifications du template afin de voir apparaître le bouton "ajouter un produit".

- PS 1.7 : Cette PR évoque la nécessité de désactiver "l'impression PDF" sur les statut de commande pour rendre possible la modification d'une commande dans le cas d'une commande "Cash on Delivery".

Lors d'une commande avec paiement contre remboursement, le statut généré est Traitement en cours. Dans le BO => Paramètres de la boutique => Paramètres de commande => Onglet Statut => si vous modifiez ce statut, vous pouvez voir que :

1 . Définir la commande comme payée => est sélectionné donc => la facture est générée
2. Afficher le PDF de la livraison => est sélectionné donc => le Bon de livraison est généré => donc, il n'est pas possible d'éditer la commande.

- PS 1.7 : Une des conditions pour voir apparaître le bouton "ajouter un produit" voir supprimer et ainsi modifier une commande est que le statut de la commande que l'on souhaite modifier ait la Livraison cochée à oui dans Paramètres de la boutique => Commandes => Etats de commande.

- PS 1.7.8.9 : Par défaut, la toute première commande test de Prestashop (John DOE) -> OHSATSERP dispose bien du bouton ajouter au produit. Cela s'expliquer car cette commande de base n'a pas de facture (pas de données relatives à cette commande dans les tables :

- ps_order_invoice
- ps_order_invoice_payment
- ps_order_invoice_tax

Les recherches sur le forum :

=>Sujet autour de PS 1.6 et PS précédents et TB 

TB : How to edit the carrier of an existing order?

PS 1.5: update order - edit order

PS 1.6 : [solved]Unable to modify customer order from BackOffice

PS 1.6 Cannot Edit or Delete Product From Order

=>Sujets ayants déjà été évoqués autour de PS 1.7 : 

1.7.X How can I change an order that has been already placed?

1.7.7.8 Add product button is not displaying at BO

1.7.7.8 Cannot add product to an existing order

Les recherches côté PR :

22263 : Cette PR traite d'un problème de prix lors d'une modification d'une commande mais non de la possibilité de modifier une commande.

17230 : Cette PR traite d'un problème lors d'un commande en COD : nécessaire de décocher le l'impression PDF dans le statut des commandes.

Les solutions alternatives recensées 

- 1) Utiliser la fonctionnalité dédiée de Prestools :  approuvé et utilisée pour le moment.

- 2) Utiliser des modules payants ou la modification des commandes peuvent se faire côté BO ou FO : non testées

-> Il existe beaucoup de modules de qualité avec des fonctionnalités avancées (renvoyer une facture à jour avec les produits supprimés, ajoutés, modifier les moyens de paiements ...) -> voir addons : https://addons.prestashop.com/en/441-order-management

Solutions à la demande  :
----------------------------- Attention, la loi rappel que la modification de facture est interdit; le cas cité est un exemple d'un paiement par chèque ou un produit était manquant (Pay by check) et la commande n'était pas encore réglée --------------------

- Avez-vous une solution pour voir apparaître le bouton "Ajouter un produit" sur l'édition des commandes sur la version PS 1.7.8.9 ?

Etapes :

Modifier les fichiers suivants en fonction de son besoin pour afficher le bouton "Add to cart" quel que soit le statut :

-> /src/Adapter/Order/CommandHandler/AddProductToOrderHandler.php
-> /src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View/products.html.twig

- Réalisez vous cette manipulation directement depuis la BDD ?

Oui c'est possible :

Etape 1) Pour la commande que l'on souhaite modifier (ajout d'un produit oublié par exemple), il est nécessaire de supprimer les lignes dans les tables liées à la commande concernée dans les trois tables suivantes :

- ps_order_invoice
- ps_order_invoice_payment
- ps_order_invoice_tax

Etape 2) On change le statut de cette commande et le bout "Ajout Panier" devient accessible.

Environnement :
Prestashop : 1.7.8.9
PHP 7.4

Note : Le post a été modifié avec les solutions.

 

prestaconfig

prestaconfig


Le post a été modifié avec les solutions.

Bonjour,

Nous souhaitons pouvoir modifier des commandes, c'est à dire, ajouter/supprimer 1 ou plusieurs produits sur des commandes.

En consultant la documentation officielle, nous avons remarqué qu'il s'agit d'une fonctionnalité native de la 1.7 : 
https://docs.prestashop-project.org/1.7-documentation/v/french/guide-utilisateur/vendre/gerer-commandes/gerer-page-commande/modifier-commande
https://github.com/PrestaShop/user-documentation-en/blob/master/user-guide/selling/managing-orders/order-page-management/editing-order.md

Problème : 

- Le bouton "Ajouter un produit" pour modifier la commande n'apparaît pas dans le back office quand il s'agit d'une commande ayant déjà une facture et ce qu'elle que soit le statut.

La demande : 

- Avez-vous une solution pour voir apparaître le bouton "Ajouter un produit" sur l'édition des commandes sur la version PS 1.7.8.9 ?

- Réalisez vous cette manipulation directement depuis la BDD ?

Nous utiliserons la solution de Prestools et verrons si nous devons passer par un module payant mais c'est toutefois dommage si cette fonctionnalité est native.

Constats:

- La fonctionnalité était déjà présente en 1.6 et censé l'être depuis la 1.7.X mais le bouton "ajouter un produit" n'est pas présent dans le BO des commandes dans la 1.7.8.X. 

- PS 1.5 : Des pistes intéressantes ont été données dans ce post ou devait être réalisé des modifications du template afin de voir apparaître le bouton "ajouter un produit".

- PS 1.7 : Cette PR évoque la nécessité de désactiver "l'impression PDF" sur les statut de commande pour rendre possible la modification d'une commande dans le cas d'une commande "Cash on Delivery".

Lors d'une commande avec paiement contre remboursement, le statut généré est Traitement en cours. Dans le BO => Paramètres de la boutique => Paramètres de commande => Onglet Statut => si vous modifiez ce statut, vous pouvez voir que :

1 . Définir la commande comme payée => est sélectionné donc => la facture est générée
2. Afficher le PDF de la livraison => est sélectionné donc => le Bon de livraison est généré => donc, il n'est pas possible d'éditer la commande.

- PS 1.7 : Une des conditions pour voir apparaître le bouton "ajouter un produit" voir supprimer et ainsi modifier une commande est que le statut de la commande que l'on souhaite modifier ait la Livraison cochée à oui dans Paramètres de la boutique => Commandes => Etats de commande.

- PS 1.7.8.9 : Par défaut, la toute première commande test de Prestashop (John DOE) -> OHSATSERP dispose bien du bouton ajouter au produit. Cela s'expliquer car cette commande de base n'a pas de facture (pas de données relatives à cette commande dans les tables :

- ps_order_invoice
- ps_order_invoice_payment
- ps_order_invoice_tax

Les recherches sur le forum :

=>Sujet autour de PS 1.6 et PS précédents et TB 

TB : How to edit the carrier of an existing order?

PS 1.5: update order - edit order

PS 1.6 : [solved]Unable to modify customer order from BackOffice

PS 1.6 Cannot Edit or Delete Product From Order

=>Sujets ayants déjà été évoqués autour de PS 1.7 : 

1.7.X How can I change an order that has been already placed?

1.7.7.8 Add product button is not displaying at BO

1.7.7.8 Cannot add product to an existing order

Les recherches côté PR :

22263 : Cette PR traite d'un problème de prix lors d'une modification d'une commande mais non de la possibilité de modifier une commande.

17230 : Cette PR traite d'un problème lors d'un commande en COD : nécessaire de décocher le l'impression PDF dans le statut des commandes.

Les solutions alternatives recensées 

- 1) Utiliser la fonctionnalité dédiée de Prestools :  approuvé et utilisée pour le moment.

- 2) Utiliser des modules payants ou la modification des commandes peuvent se faire côté BO ou FO : non testées

-> Il existe beaucoup de modules de qualité avec des fonctionnalités avancées (renvoyer une facture à jour avec les produits supprimés, ajoutés, modifier les moyens de paiements ...) -> voir addons : https://addons.prestashop.com/en/441-order-management

Solutions à la demande  :
----------------------------- Attention, la loi rappel que la modification de facture est interdit; le cas cité est un exemple d'un paiement par chèque ou un produit était manquant (Pay by check) et la commande n'était pas encore réglée --------------------

- Avez-vous une solution pour voir apparaître le bouton "Ajouter un produit" sur l'édition des commandes sur la version PS 1.7.8.9 ?

Etapes :

Modifier les fichiers suivants en fonction de son besoin pour afficher le bouton "Add to cart" quel que soit le statut :

-> /src/Adapter/Order/CommandHandler/AddProductToOrderHandler.php
-> /src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View/products.html.twig

- Réalisez vous cette manipulation directement depuis la BDD ?

Oui c'est possible :

Etape 1) Pour la commande que l'on souhaite modifier (ajout d'un produit oublié par exemple), il est nécessaire de supprimer les tables liées à la commande concernée dans les trois tables suivants :

- ps_order_invoice
- ps_order_invoice_payment
- ps_order_invoice_tax

Etape 2) On change le statut de cette commande et le bout "Ajout Panier" devient accessible.

 

 

Environnement :
Prestashop : 1.7.8.9
PHP 7.4

Note : Le post a été modifié avec les solutions.

 

prestaconfig

prestaconfig


Forgot to change the topic name

Bonjour,

Nous souhaitons pouvoir modifier des commandes, c'est à dire, ajouter/supprimer 1 ou plusieurs produits sur des commandes.

En consultant la documentation officielle, nous avons remarqué qu'il s'agit d'une fonctionnalité native de la 1.7 : 
https://docs.prestashop-project.org/1.7-documentation/v/french/guide-utilisateur/vendre/gerer-commandes/gerer-page-commande/modifier-commande
https://github.com/PrestaShop/user-documentation-en/blob/master/user-guide/selling/managing-orders/order-page-management/editing-order.md

Problème : 

- Le bouton "Ajouter un produit" pour modifier la commande n'apparaît pas dans le back office même si nous souhaitons modifier une commande ayant un statut de commande censé rendre la commande modifiable. Nous avons testé chacun des statut et désactiver l'option impression PDF mais impossible de voir apparaître le bouton.

La demande : 

- Avez-vous une solution pour voir apparaître le bouton "Ajouter un produit" sur l'édition des commandes sur la version PS 1.7.8.X ?

- Réalisez vous cette manipulation directement depuis la BDD ?

Si d'autres constatent qu'il n'ont pas cette option, nous ouvrirons un PR mais je n'ai pas trouvé de PR relative à ce sujet. 
Nous utiliserons la solution de Prestools et verrons si nous devons passer par un module payant mais c'est toutefois dommage si cette fonctionnalité est native.

Constats:

- La fonctionnalité était déjà présente en 1.6 et censé l'être depuis la 1.7.X mais le bouton "ajouter un produit" n'est pas présent dans le BO des commandes dans la 1.7.8.X. 

- PS 1.5 : Des pistes intéressantes ont été données dans ce post ou devait être réalisé des modifications du template afin de voir apparaître le bouton "ajouter un produit".

- PS 1.7 : Cette PR évoque la nécessité de désactiver "l'impression PDF" sur les statut de commande pour rendre possible la modification d'une commande dans le cas d'une commande "Cash on Delivery".

Lors d'une commande avec paiement contre remboursement, le statut généré est Traitement en cours. Dans le BO => Paramètres de la boutique => Paramètres de commande => Onglet Statut => si vous modifiez ce statut, vous pouvez voir que :

1 . Définir la commande comme payée => est sélectionné donc => la facture est générée
2. Afficher le PDF de la livraison => est sélectionné donc => le Bon de livraison est généré => donc, il n'est pas possible d'éditer la commande.

- PS 1.7 : Une des conditions pour voir apparaître le bouton "ajouter un produit" voir supprimer et ainsi modifier une commande est que le statut de la commande que l'on souhaite modifier ait la Livraison cochée à oui dans Paramètres de la boutique => Commandes => Etats de commande. Cette condition est consultable dans le fichier "/controllers/admin/AdminOrdersController.php"

=> Ci dessous la fonction qui permet de voir que la condition d'édition d'un produit "($order->hasBeenDelivered())" doit être respectée.

 protected function doEditProductValidation(OrderDetail $order_detail, Order $order, OrderInvoice $order_invoice = null)
    {
        if (!Validate::isLoadedObject($order_detail)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The Order Detail object could not be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!empty($order_invoice) && !Validate::isLoadedObject($order_invoice)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The invoice object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!Validate::isLoadedObject($order)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The order object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if ($order_detail->id_order != $order->id) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit the order detail for this order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        // We can't edit a delivered order
        if ($order->hasBeenDelivered()) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit a delivered order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!empty($order_invoice) && $order_invoice->id_order != Tools::getValue('id_order')) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot use this invoice for the order', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

=> Ci dessous la fonction qui permet de voir que la condition de suppression d'un produit  "($order->hasBeenDelivered())" doit être respectée.

    protected function doDeleteProductLineValidation(OrderDetail $order_detail, Order $order)
    {
        if (!Validate::isLoadedObject($order_detail)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The Order Detail object could not be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!Validate::isLoadedObject($order)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The order object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if ($order_detail->id_order != $order->id) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot delete the order detail.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        // We can't edit a delivered order
        if ($order->hasBeenDelivered()) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit a delivered order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }
    }

Les recherches sur le forum :

=>Sujet autour de PS 1.6 et PS précédents et TB 

TB : How to edit the carrier of an existing order?

PS 1.5: update order - edit order

PS 1.6 : [solved]Unable to modify customer order from BackOffice

PS 1.6 Cannot Edit or Delete Product From Order

=>Sujets ayants déjà été évoqués autour de PS 1.7 : 

1.7.X How can I change an order that has been already placed?

1.7.7.8 Add product button is not displaying at BO

1.7.7.8 Cannot add product to an existing order

Les recherches côté PR :

22263 : Cette PR traite d'un problème de prix lors d'une modification d'une commande mais non de la possibilité de modifier une commande.

17230 : Cette PR traite d'un problème lors d'un commande en COD : nécessaire de décocher le l'impression PDF dans le statut des commandes.

Les solutions alternatives recensées 

- 1) Utiliser la fonctionnalité dédiée de Prestools :  approuvé et utilisée pour le moment.

- 2) Utiliser des modules payants ou la modification des commandes peuvent se faire côté BO ou FO : non testées

-> Il existe beaucoup de modules de qualité avec des fonctionnalités avancées (renvoyer une facture à jour avec les produits supprimés, ajoutés, modifier les moyens de paiements ...) -> voir addons : https://addons.prestashop.com/en/441-order-management

Environnement :
Prestashop : 1.7.8.9
PHP 7.4

 

Merci par avance de vos retours.

 

prestaconfig

prestaconfig


Forgot to change the topic name

Bonjour,

Nous souhaitons pouvoir modifier des commandes, c'est à dire, ajouter/supprimer 1 ou plusieurs produits sur des commandes.

En consultant la documentation officielle, nous avons remarqué qu'il s'agit d'une fonctionnalité native de la 1.7 : https://docs.prestashop-project.org/1.7-documentation/v/french/guide-utilisateur/vendre/gerer-commandes/gerer-page-commande/modifier-commande

Problème : 

- Le bouton "Ajouter un produit" pour modifier la commande n'apparaît pas dans le back office même si nous souhaitons modifier une commande ayant un statut de commande censé rendre la commande modifiable. Nous avons testé chacun des statut et désactiver l'option impression PDF mais impossible de voir apparaître le bouton.

La demande : 

- Avez-vous une solution pour voir apparaître le bouton "Ajouter un produit" sur l'édition des commandes sur la version PS 1.7.8.X ?

- Réalisez vous cette manipulation directement depuis la BDD ?

Si d'autres constatent qu'il n'ont pas cette option, nous ouvrirons un PR mais je n'ai pas trouvé de PR relative à ce sujet. 
Nous utiliserons la solution de Prestools et verrons si nous devons passer par un module payant mais c'est toutefois dommage si cette fonctionnalité est native.

Constats:

- La fonctionnalité était déjà présente en 1.6 et censé l'être depuis la 1.7.X mais le bouton "ajouter un produit" n'est pas présent dans le BO des commandes dans la 1.7.8.X. 

- PS 1.5 : Des pistes intéressantes ont été données dans ce post ou devait être réalisé des modifications du template afin de voir apparaître le bouton "ajouter un produit".

- PS 1.7 : Cette PR évoque la nécessité de désactiver "l'impression PDF" sur les statut de commande pour rendre possible la modification d'une commande dans le cas d'une commande "Cash on Delivery".

Lors d'une commande avec paiement contre remboursement, le statut généré est Traitement en cours. Dans le BO => Paramètres de la boutique => Paramètres de commande => Onglet Statut => si vous modifiez ce statut, vous pouvez voir que :

1 . Définir la commande comme payée => est sélectionné donc => la facture est générée
2. Afficher le PDF de la livraison => est sélectionné donc => le Bon de livraison est généré => donc, il n'est pas possible d'éditer la commande.

- PS 1.7 : Une des conditions pour voir apparaître le bouton "ajouter un produit" voir supprimer et ainsi modifier une commande est que le statut de la commande que l'on souhaite modifier ait la Livraison cochée à oui dans Paramètres de la boutique => Commandes => Etats de commande. Cette condition est consultable dans le fichier "/controllers/admin/AdminOrdersController.php"

=> Ci dessous la fonction qui permet de voir que la condition d'édition d'un produit "($order->hasBeenDelivered())" doit être respectée.

 protected function doEditProductValidation(OrderDetail $order_detail, Order $order, OrderInvoice $order_invoice = null)
    {
        if (!Validate::isLoadedObject($order_detail)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The Order Detail object could not be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!empty($order_invoice) && !Validate::isLoadedObject($order_invoice)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The invoice object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!Validate::isLoadedObject($order)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The order object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if ($order_detail->id_order != $order->id) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit the order detail for this order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        // We can't edit a delivered order
        if ($order->hasBeenDelivered()) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit a delivered order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!empty($order_invoice) && $order_invoice->id_order != Tools::getValue('id_order')) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot use this invoice for the order', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

=> Ci dessous la fonction qui permet de voir que la condition de suppression d'un produit  "($order->hasBeenDelivered())" doit être respectée.

    protected function doDeleteProductLineValidation(OrderDetail $order_detail, Order $order)
    {
        if (!Validate::isLoadedObject($order_detail)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The Order Detail object could not be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!Validate::isLoadedObject($order)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The order object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if ($order_detail->id_order != $order->id) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot delete the order detail.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        // We can't edit a delivered order
        if ($order->hasBeenDelivered()) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit a delivered order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }
    }

Les recherches sur le forum :

=>Sujet autour de PS 1.6 et PS précédents et TB 

TB : How to edit the carrier of an existing order?

PS 1.5: update order - edit order

PS 1.6 : [solved]Unable to modify customer order from BackOffice

PS 1.6 Cannot Edit or Delete Product From Order

=>Sujets ayants déjà été évoqués autour de PS 1.7 : 

1.7.X How can I change an order that has been already placed?

1.7.7.8 Add product button is not displaying at BO

1.7.7.8 Cannot add product to an existing order

Les recherches côté PR :

22263 : Cette PR traite d'un problème de prix lors d'une modification d'une commande mais non de la possibilité de modifier une commande.

17230 : Cette PR traite d'un problème lors d'un commande en COD : nécessaire de décocher le l'impression PDF dans le statut des commandes.

Les solutions alternatives recensées 

- 1) Utiliser la fonctionnalité dédiée de Prestools :  approuvé et utilisée pour le moment.

- 2) Utiliser des modules payants ou la modification des commandes peuvent se faire côté BO ou FO : non testées

-> Il existe beaucoup de modules de qualité avec des fonctionnalités avancées (renvoyer une facture à jour avec les produits supprimés, ajoutés, modifier les moyens de paiements ...) -> voir addons : https://addons.prestashop.com/en/441-order-management

Environnement :
Prestashop : 1.7.8.9
PHP 7.4

 

Merci par avance de vos retours.

 

prestaconfig

prestaconfig

Bonjour,

Nous souhaitons pouvoir modifier des commandes, c'est à dire, ajouter/supprimer 1 ou plusieurs produits sur des commandes.

En consultant la documentation officielle, nous avons remarqué qu'il s'agit d'une fonctionnalité native de la 1.7 : https://docs.prestashop-project.org/1.7-documentation/v/french/guide-utilisateur/vendre/gerer-commandes/gerer-page-commande/modifier-commande

Problème : 

- Le bouton "Ajouter un produit" pour modifier la commande n'apparaît pas dans le back office même si nous souhaitons modifier une commande ayant un statut de commande censé rendre la commande modifiable. Nous avons testé chacun des statut et désactiver l'option impression PDF mais impossible de voir apparaître le bouton.

La demande : 

- Avez-vous une solution pour voir apparaître le bouton "Ajouter un produit" sur l'édition des commandes sur la version PS 1.7.8.X ?

- Réalisez vous cette manipulation directement depuis la BDD ?

Si d'autres constatent qu'il n'ont pas cette option, nous ouvrirons un PR mais je n'ai pas trouvé de PR relative à ce sujet. 
Nous utiliserons la solution de Prestools et verrons si nous devons passer par un module payant mais c'est toutefois dommage si cette fonctionnalité est native.

Constats:

- La fonctionnalité était déjà présente en 1.6 et censé l'être depuis la 1.7.X mais le bouton "ajouter un produit" n'est pas présent dans le BO des commandes dans la 1.7.8.X. 

- PS 1.5 : Des pistes intéressantes ont été données dans ce post ou devait être réalisé des modifications du template afin de voir apparaître le bouton "ajouter un produit".

- PS 1.7 : Cette PR évoque la nécessité de désactiver "l'impression PDF" sur les statut de commande pour rendre possible la modification d'une commande dans le cas d'une commande "Cash on Delivery".

Lors d'une commande avec paiement contre remboursement, le statut généré est Traitement en cours. Dans le BO => Paramètres de la boutique => Paramètres de commande => Onglet Statut => si vous modifiez ce statut, vous pouvez voir que :

1 . Définir la commande comme payée => est sélectionné donc => la facture est générée
2. Afficher le PDF de la livraison => est sélectionné donc => le Bon de livraison est généré => donc, il n'est pas possible d'éditer la commande.

- PS 1.7 : Une des conditions pour voir apparaître le bouton "ajouter un produit" voir supprimer et ainsi modifier une commande est que le statut de la commande que l'on souhaite modifier ait la Livraison cochée à oui dans Paramètres de la boutique => Commandes => Etats de commande. Cette condition est consultable dans le fichier "/controllers/admin/AdminOrdersController.php"

=> Ci dessous la fonction qui permet de voir que la condition d'édition d'un produit "($order->hasBeenDelivered())" doit être respectée.

 protected function doEditProductValidation(OrderDetail $order_detail, Order $order, OrderInvoice $order_invoice = null)
    {
        if (!Validate::isLoadedObject($order_detail)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The Order Detail object could not be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!empty($order_invoice) && !Validate::isLoadedObject($order_invoice)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The invoice object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!Validate::isLoadedObject($order)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The order object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if ($order_detail->id_order != $order->id) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit the order detail for this order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        // We can't edit a delivered order
        if ($order->hasBeenDelivered()) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit a delivered order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!empty($order_invoice) && $order_invoice->id_order != Tools::getValue('id_order')) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot use this invoice for the order', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

=> Ci dessous la fonction qui permet de voir que la condition de suppression d'un produit  "($order->hasBeenDelivered())" doit être respectée.

    protected function doDeleteProductLineValidation(OrderDetail $order_detail, Order $order)
    {
        if (!Validate::isLoadedObject($order_detail)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The Order Detail object could not be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if (!Validate::isLoadedObject($order)) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('The order object cannot be loaded.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        if ($order_detail->id_order != $order->id) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot delete the order detail.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }

        // We can't edit a delivered order
        if ($order->hasBeenDelivered()) {
            die(json_encode(array(
                'result' => false,
                'error' => $this->trans('You cannot edit a delivered order.', array(), 'Admin.Orderscustomers.Notification'),
            )));
        }
    }

Les recherches sur le forum :

=>Sujet autour de PS 1.6 et PS précédents et TB 

TB : How to edit the carrier of an existing order?

PS 1.5: update order - edit order

PS 1.6 : [solved]Unable to modify customer order from BackOffice

PS 1.6 Cannot Edit or Delete Product From Order

=>Sujets ayants déjà été évoqués autour de PS 1.7 : 

1.7.X How can I change an order that has been already placed?

1.7.7.8 Add product button is not displaying at BO

1.7.7.8 Cannot add product to an existing order

Les recherches côté PR :

22263 : Cette PR traite d'un problème de prix lors d'une modification d'une commande mais non de la possibilité de modifier une commande.

17230 : Cette PR traite d'un problème lors d'un commande en COD : nécessaire de décocher le l'impression PDF dans le statut des commandes.

Les solutions alternatives recensées 

- 1) Utiliser la fonctionnalité dédiée de Prestools :  approuvé et utilisée pour le moment.

- 2) Utiliser des modules payants ou la modification des commandes peuvent se faire côté BO ou FO : non testées

-> Il existe beaucoup de modules de qualité avec des fonctionnalités avancées (renvoyer une facture à jour avec les produits supprimés, ajoutés, modifier les moyens de paiements ...) -> voir addons : https://addons.prestashop.com/en/441-order-management

Environnement :
Prestashop : 1.7.8.9
PHP 7.4

 

Merci par avance de vos retours.

 

×
×
  • Create New...