82 lines
2.7 KiB
PHP
Executable file
82 lines
2.7 KiB
PHP
Executable file
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Le modèle du reçu envoyé au client (« Order Details »).
|
|
*/
|
|
|
|
use Automattic\WooCommerce\Admin\Overrides\Order;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Support\Number;
|
|
use Illuminate\Support\Str;
|
|
use Timber\Timber;
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit();
|
|
}
|
|
|
|
// Initialise Timber
|
|
Timber::init();
|
|
// Sélectionne le répertoire contenant les modèles Twig
|
|
Timber::$dirname = ['views'];
|
|
|
|
$context = Timber::context();
|
|
$templates = ['email-base.twig'];
|
|
|
|
/** @var Order $commande La Commande issue du contexte contenu dans la variable $order. */
|
|
$commande = $order;
|
|
|
|
/** @var Carbon $date */
|
|
$date = new Carbon($commande->get_date_created());
|
|
|
|
$email = [
|
|
'adresses' => ['facturation' => $commande->get_address('billing'), 'livraison' => $commande->get_address('shipping')],
|
|
'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()],
|
|
'livraison' => [
|
|
'methode' => $commande->get_shipping_method(),
|
|
'numero_suivi' => $commande->get_meta('tracking_number'),
|
|
],
|
|
'paiement' => ['methode' => ''],
|
|
'produits' => collect($commande->get_items())->map(static function (WC_Order_Item_Product $article) {
|
|
$produit = $article->get_product();
|
|
|
|
if (is_bool($produit) || $produit === null) {
|
|
return [];
|
|
}
|
|
|
|
return [
|
|
// Récupère l'Attribut d'un Produit variable ou renvoie un tableau vide
|
|
'attribut' => $produit->is_type('variable')
|
|
? collect($produit->get_attributes())
|
|
->mapWithKeys(static fn($_atr, $cle): array => [
|
|
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
|
'valeur' => $produit->get_attribute($cle),
|
|
])
|
|
->toArray()
|
|
: [],
|
|
'lien' => $produit->get_permalink(),
|
|
'nom' => $produit->get_title(),
|
|
'prix_total' => $article->get_total(),
|
|
'quantite' => $article->get_quantity(),
|
|
];
|
|
}),
|
|
'totaux' => [
|
|
'sous_total_livraison' => '0' === $commande->get_shipping_total() ? 'Free' : $commande->get_shipping_total() . '€',
|
|
'sous_total_produits' => $commande->get_subtotal() . '€',
|
|
'sous_total_reduction' => '0.00' === $commande->get_discount_total()
|
|
? '0'
|
|
: Number::format((float) $commande->get_discount_total(), maxPrecision: 2) . '€',
|
|
'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€',
|
|
],
|
|
];
|
|
// Transforme les codes de pays en noms de pays
|
|
$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()];
|
|
$email['adresses']['facturation']['country'] = WC()->countries->countries[$commande->get_billing_country()];
|
|
|
|
$context['commande'] = $email;
|
|
// Rendu
|
|
Timber::render(
|
|
filenames: $templates,
|
|
data: $context,
|
|
);
|