Jump to content

Prestashop 8 ajouter un champs custom lors de la création d'une commande depuis le back office


Recommended Posts

Bonjour à tous !

Je participe au développement du Prestashop de mon entreprise, nous sommes sur la version 8.1.2.

Les commandes sont crées par nos équipes depuis le back office, le site n'a pas encore de front.

Nous avons une spécificité sur les coûts de livraison à l'internationale, il n'y a pas de prix fixes, c'est négocié avec le client au moment de la création de la commande.

J'ai crée un module pour ajouter un champs custom à mon formulaire de création de commandes du back office. Dans ce champs, les équipes rentreront le prix de la livraison.

ça ressemble à ça pour le moment
 

Capturedcran2024-01-24180807.thumb.png.e0bc76f51eb04082fc95116fffcb4ad6.png

Voici le code dans le fichier racine de mon module avec la fonction hookDisplayCustomFields

public function hookDisplayCustomFields() {
        return '
        <div class="form-group row">
            <span class="col-md-6 col-xl-3 text-md-right col-form-label">
            EXPORT Frais de livraison (TTC)
            </span>
            <div class="col-md-6 col-xl-4">
            <input class="form-control" type="text" name="export_shipping_cost" />
            </div>
        </div>
        ';
    }

qui crée le champs custom, puis j'ai fais un override du fichier  src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/Create/shipping.html.twig

en le plaçant ici dans mon module : modules/ordercustomfields/views/PrestaShop/Admin/Sell/Order/Order/Blocks/Create/shipping.html.twig

en insérant le hook : 

<div class="form-group row">
        <label class="col-md-6 col-xl-3 text-md-right col-form-label" for="delivery-option-select">
          {{ 'Delivery option'|trans({}, 'Admin.Orderscustomers.Feature') }}
        </label>
        <div class="col-md-6 col-xl-4">
          <select class="form-control" id="delivery-option-select" name="carrier-id"></select>
        </div>
      </div>
      <div class="form-group row">
        <span class="col-md-6 col-xl-3 text-md-right col-form-label">
          {{ 'Shipping price ADV (Tax incl.)'|trans({}, 'Admin.Orderscustomers.Feature') }}
        </span>
        <div class="col-md-6 col-xl-4">
          <span class="js-total-shipping-tax-inc font-weight-bold"></span>
        </div>
      </div>
      {{ renderhook('displayCustomFields') }}

Ensuite, dans le fichier racine de mon module, j'ai ce hook
 

public function hookActionValidateOrder($params) {   
  $shipping_price = Tools::getValue('export_shipping_cost');
  dump($shipping_price);
  dump($params);
  die;
}

Ce hook me permet de récupérer l'objet Order avec $params['order']
Je veux ensuite interagir sur cet objet, pour y insérer le coût de la livraison, que je suis censé récupérer dans $shipping_price (export_shipping_cost étant le name de mon input custom)

Mais, quand je dump de $shipping_price, j'ai juste "false".

J'aimerais donc savoir si je m'y prend bien à la base, et si c'est le cas, comment faire pour récupérer le coût de la livraison.

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

Salut,

If youfalseduring the$shipping_priceto ldump($shipping_price),Tools::getValue('export_shipping_cost') n'a pas réussi à récupérer la valeur des paramètres de la requête.

Aceexport_shipping_cost.

Vous pouvez utiliser var_dump($_POST)orvar_dump($_GET)p

Cela devrait vous aider.

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