loder

Une facture Woocommerce n’a pas la ligne « Total HT » comprennent le prix des produits, la livraison et la réduction. Nous allons voir comment faire ça ensemble.

Qu’est-ce que WooCommerce ?

WooCommerce est une extension open source pour WordPress permettant de créer une boutique en ligne. Il est conçu pour les petites et grandes entreprises en ligne utilisant WordPress

Une facture WooCommerce à quoi ça ressemble ?

Le mail automatique envoyé par WooCommerce ressemble à ce type de facture. La facture contient les informations basiques pour la comptabilité.

Facture WooCommerce

Cette facture ne pose aucun problème pour le client, mais pour le gestionnaire du site au niveau de la comptabilité cette facturation ne correspond pas aux attentes. Il faudra faire des calculs au préalable pour voir le prix HT (avec la livraison d’ajouter et la réduction de retirer).

Comment avoir une facture complète au format PDF ?

En utilisant une extension ! Oui mais laquelle ?

WooCommerce PDF Invoices & Packing Slips est l’un des leader dans ce domaine. Il propose une version gratuite avec toutes les fonctionnalités et une version payantes si l’on veut personnaliser un peu plus nos factures ou bon de livraison.

C’est grâce à ce plugin que l’on va pouvoir ajouter notre ligne « Total HT » grâce à du code PHP.

Ne vous inquiétez pas il n’y à rien de compliqué il faut seulement Copier / Coller le texte dans le fichier « functions.php » de votre thème actif.

 

Code ‘classique’


  <?php 
  /**
  *  Afficher le Total HT
  */
  add_filter( 'wpo_wcpdf_woocommerce_totals', 'add_discounted_subtotal_to_pdf_invoices', 10, 2 );
  function add_discounted_subtotal_to_pdf_invoices( $totals, $order ) {
     //Récupére la valeur 'Sous-total' 
      $subtotal = strip_tags($totals['cart_subtotal']['value']);
      $subtotal = (float) preg_replace('/[^0-9.]+/', '', $subtotal);

      //Récupére la valeur 'Réduction' 
      $discount = 0;
      if(!empty($totals['discount']['value'])){
       $discount = strip_tags($totals['discount']['value']);
       $discount = (float) preg_replace('/[^0-9.]+/', '', $discount);
      }
        //Récupére la valeur 'Expédition' 
    $shipping = strip_tags($totals['shipping']['value']);
    $shipping = (float) preg_replace('/[^0-9.]+/', '', $shipping);
    
      $new_totals = array();
     //Loop through totals lines
      foreach( $totals as $key => $values ){
          $new_totals[$key] = $totals[$key];
         //Inset new calculated 'Subtotal discounted' after total discount
          if( $key == 'shipping'  ){
              $new_totals['subtotal_discounted'] = array(
                  'label' => __('Total HT', 'wpo_wcpdf'),
                  'value' => wc_price($subtotal - $discount + $shipping)
              );
          }
      }
      return $new_totals;
  }?>
 

Code si 100 x supérieur

 


  <?php 
  /**
  *  Afficher le Total HT
  */
  add_filter( 'wpo_wcpdf_woocommerce_totals', 'add_discounted_subtotal_to_pdf_invoices', 10, 2 );
  function add_discounted_subtotal_to_pdf_invoices( $totals, $order ) {
     //Récupére la valeur 'Sous-total' 
      $subtotal = strip_tags($totals['cart_subtotal']['value']);
      $subtotal = (float) preg_replace('/[^0-9.]+/', '', $subtotal);

      //Récupére la valeur 'Réduction' 
      $discount = 0;
      if(!empty($totals['discount']['value'])){
       $discount = strip_tags($totals['discount']['value']);
       $discount = (float) preg_replace('/[^0-9.]+/', '', $discount);
      }
        //Récupére la valeur 'Expédition' 
    $shipping = strip_tags($totals['shipping']['value']);
    $shipping = (float) preg_replace('/[^0-9.]+/', '', $shipping);
    
      $new_totals = array();
     //Loop through totals lines
      foreach( $totals as $key => $values ){
          $new_totals[$key] = $totals[$key];
         //Inset new calculated 'Subtotal discounted' after total discount
          if( $key == 'shipping'  ){
              $new_totals['subtotal_discounted'] = array(
                  'label' => __('Total HT', 'wpo_wcpdf'),
                  'value' => wc_price(($subtotal - $discount + $shipping)/100)
              );
          }
      }
      return $new_totals;
  }?>