@ -70,11 +70,11 @@ def _get_order_details(instance):
# Translate statuses
status_fr_map = {
" PENDING " : " EN ATTENTE " , " PAID " : " PAYÉE " ,
" SHIPPED " : " EXPÉDIÉE " , " DELIVERED " : " LIVRÉE " , " CANCELED " : " ANNULÉE "
" SHIPPED " : " EXPÉDIÉE " , " DELIVERED " : " LIVRÉE " , " CANCELED " : " ANNULÉE " , " REFUNDED " : " REMBOURSÉE " , " PREPARED " : " EN COURS DE PRÉPARATION " ,
}
payment_status_fr_map = {
" UNPAID " : " NON PAYÉE " , " PAID " : " PAYÉE " , " FAILED " : " ÉCHOUÉE "
" UNPAID " : " NON PAYÉE " , " PAID " : " PAYÉE " , " FAILED " : " ÉCHOUÉE " , " REFUNDED " : " REMBOURSÉE " ,
}
# Calculate discount information
@ -106,7 +106,8 @@ def _get_order_details(instance):
' customer_info ' : customer_info ,
' customer_email ' : customer_email ,
' date_ordered ' : instance . date_ordered ,
' admin_url ' : f " { settings . SHOP_SITE_ROOT_URL } { reverse ( ' admin:shop_order_change ' , args = [ instance . id ] ) } "
' admin_url ' : f " { settings . SHOP_SITE_ROOT_URL } { reverse ( ' admin:shop_order_change ' , args = [ instance . id ] ) } " ,
' shipping_address ' : instance . get_shipping_address ( ) ,
}
def _build_items_list ( order_id , action ) :
@ -153,6 +154,8 @@ Statut de paiement: {order_details['payment_status_fr']}
{ order_details [ ' customer_info ' ] }
{ order_details [ ' shipping_address ' ] }
Articles :
{ items_list }
@ -195,7 +198,8 @@ def _send_customer_notification(instance, order_details, items_list):
order_details [ ' final_price ' ] ,
items_list ,
contact_email ,
shop_url
shop_url ,
order_details [ ' shipping_address ' ]
)
# Skip if no email content returned
@ -213,7 +217,7 @@ def _send_customer_notification(instance, order_details, items_list):
def _get_customer_email_content ( status , payment_status , order_id , date , status_fr ,
total_price , has_coupon , coupon_info , discount_amount ,
final_price , items_list , contact_email , shop_url ) :
final_price , items_list , contact_email , shop_url , shipping_address ) :
""" Get the appropriate customer email content based on order status. """
# Build price information with coupon details if applicable
@ -230,21 +234,23 @@ Montant payé: {final_price}€"""
' subject ' : f " Confirmation de votre commande # { order_id } - Padel Club " ,
' message ' : _build_payment_confirmation_email ( order_id , date , status_fr ,
price_info , items_list ,
contact_email , shop_url )
contact_email , shop_url , shipping_address )
}
# Order status update email
elif status in [ OrderStatus . SHIPPED , OrderStatus . DELIVERED , OrderStatus . CANCELED ] :
elif status in [ OrderStatus . SHIPPED , OrderStatus . DELIVERED , OrderStatus . CANCELED , OrderStatus . PREPARED , OrderStatus . REFUNDED ] :
status_message = {
OrderStatus . PREPARED : " Votre commande est en cours de préparation. " ,
OrderStatus . SHIPPED : " Votre commande a été expédiée et est en cours de livraison. " ,
OrderStatus . DELIVERED : " Votre commande a été livrée. Nous espérons que vous apprécierez vos produits ! " ,
OrderStatus . REFUNDED : " Votre commande a été annulée et son remboursement est en cours de traitement. " ,
OrderStatus . CANCELED : " Votre commande a été annulée. Si vous n ' êtes pas à l ' origine de cette annulation, veuillez nous contacter immédiatement. "
} . get ( status , " " )
return {
' subject ' : f " Mise à jour de votre commande # { order_id } - Padel Club " ,
' message ' : _build_status_update_email ( order_id , date , status_message , status_fr ,
price_info , items_list , contact_email )
price_info , items_list , contact_email , shipping_address )
}
# Payment issue notification
@ -266,7 +272,7 @@ Montant payé: {final_price}€"""
# No email needed
return None
def _build_payment_confirmation_email ( order_id , date , status_fr , price_info , items_list , contact_email , shop_url ) :
def _build_payment_confirmation_email ( order_id , date , status_fr , price_info , items_list , contact_email , shop_url , shipping_address ) :
""" Build payment confirmation email message. """
return f """
Bonjour ,
@ -282,7 +288,10 @@ Détail de votre commande :
{ items_list }
IMPORTANT - COMMENT RÉCUPÉRER VOTRE COMMANDE :
Notre boutique fonctionne entre amis ' Padel Club ' . Nous allons préparer votre commande et vous la remettre en main propre lors d ' une prochaine session de padel ! Aucune expédition n ' est prévue , nous vous remettrons directement vos articles sur place .
Notre boutique fonctionne entre amis ' Padel Club ' .
Nous allons préparer votre commande et vous la remettre en main propre lors d ' une prochaine session de padel !
Si jamais la livraison est possible , nous vous expédierons votre commande à l ' adresse indiquée. Vous serez alors notifiés par email lorsque votre commande sera expédiée.
{ shipping_address }
Pour toute question concernant votre commande , n ' hésitez pas à contacter notre service client :
{ contact_email }
@ -295,7 +304,7 @@ Merci de votre confiance et à bientôt sur Padel Club !
L ' équipe Padel Club
"""
def _build_status_update_email ( order_id , date , status_message , status_fr , price_info , items_list , contact_email ) :
def _build_status_update_email ( order_id , date , status_message , status_fr , price_info , items_list , contact_email , shipping_address ) :
""" Build status update email message. """
return f """
Bonjour ,
@ -303,6 +312,7 @@ Bonjour,
Mise à jour concernant votre commande Padel Club #{order_id} du {date} :
{ status_message }
{ shipping_address }
Statut actuel : { status_fr }
{ price_info }