2025-12-19 09:43:33 +00:00
|
|
|
"""Vuews pour la gestion des fournisseurs."""
|
|
|
|
|
|
|
|
|
|
from django.shortcuts import render, redirect
|
|
|
|
|
from gestion_produit.models import Fournisseur, Categorie, Commander
|
|
|
|
|
from django.http import JsonResponse
|
|
|
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
|
|
|
|
|
|
from .forms import FournisseurForm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required(login_url="login")
|
|
|
|
|
def index(request):
|
|
|
|
|
"""Gérez la vue index de la gestion des fournisseurs.
|
|
|
|
|
|
2026-01-21 11:03:11 +00:00
|
|
|
Gère l'affichage de la liste des fournisseurs dans un tableau
|
|
|
|
|
à l'aide de tabulatorjs et l'enregistrement d'un nouveau fournisseur.
|
|
|
|
|
|
2025-12-19 09:43:33 +00:00
|
|
|
Parameters
|
|
|
|
|
----------
|
|
|
|
|
request : HttpRequest
|
|
|
|
|
La requête HTTP entrante.
|
|
|
|
|
|
|
|
|
|
Returns
|
|
|
|
|
-------
|
|
|
|
|
HttpResponse
|
|
|
|
|
La réponse HTTP avec le formulaire de fournisseur.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
if request.method == "POST":
|
|
|
|
|
form = FournisseurForm(request.POST, request.FILES)
|
|
|
|
|
if form.is_valid():
|
|
|
|
|
form.save()
|
|
|
|
|
|
|
|
|
|
form = FournisseurForm()
|
|
|
|
|
return render(
|
|
|
|
|
request,
|
|
|
|
|
"gestion_fournisseur/index.html",
|
|
|
|
|
{"form": form, "listeCategorie": Categorie.objects.all()},
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required(login_url="login")
|
2026-01-21 11:03:11 +00:00
|
|
|
def liste_fournisseurs(request):
|
2025-12-19 09:43:33 +00:00
|
|
|
"""Renvoyez la liste des fournisseurs au format JSON.
|
|
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
|
----------
|
|
|
|
|
request : HttpRequest
|
|
|
|
|
La requête HTTP entrante.
|
|
|
|
|
|
|
|
|
|
Returns
|
|
|
|
|
-------
|
|
|
|
|
JsonResponse
|
|
|
|
|
La réponse JSON contenant la liste des fournisseurs.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
fournisseurs = Fournisseur.objects.all().order_by("-id")
|
|
|
|
|
data = [
|
|
|
|
|
{
|
|
|
|
|
"id": f.id,
|
|
|
|
|
"nom_entreprise": f.nom_entreprise,
|
|
|
|
|
"representant": f.nom_prenom_representant,
|
|
|
|
|
"fonction": f.fonction,
|
|
|
|
|
"telephone": f.telephone,
|
|
|
|
|
"email": f.email,
|
|
|
|
|
"note": f.note,
|
|
|
|
|
}
|
|
|
|
|
for f in fournisseurs
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
return JsonResponse(data, safe=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required(login_url="login")
|
|
|
|
|
def liste_fournisseur_categorie(request):
|
2026-01-21 11:03:11 +00:00
|
|
|
"""Renvoyez la liste des fournisseurs par catégorie de produit fourni au format JSON.
|
2025-12-19 09:43:33 +00:00
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
|
----------
|
|
|
|
|
request : HttpRequest
|
|
|
|
|
La requête HTTP entrante.
|
2026-01-21 11:03:11 +00:00
|
|
|
c : int
|
|
|
|
|
L'identifiant de la catégorie de produit.
|
2025-12-19 09:43:33 +00:00
|
|
|
|
|
|
|
|
Returns
|
|
|
|
|
-------
|
|
|
|
|
JsonResponse
|
|
|
|
|
La réponse JSON contenant la liste des fournisseurs filtrés par
|
|
|
|
|
catégorie.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
categorie = Categorie.objects.get(id=request.GET["c"])
|
|
|
|
|
fournisseur_categorie = Fournisseur.objects.filter(categorie=categorie)
|
|
|
|
|
|
|
|
|
|
data = [
|
|
|
|
|
{
|
|
|
|
|
"id": f.id,
|
|
|
|
|
"nom_entreprise": f.nom_entreprise,
|
|
|
|
|
"representant": f.nom_prenom_representant,
|
|
|
|
|
"fonction": f.fonction,
|
|
|
|
|
"telephone": f.telephone,
|
|
|
|
|
"email": f.email,
|
|
|
|
|
"note": f.note,
|
|
|
|
|
}
|
|
|
|
|
for f in fournisseur_categorie
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
return JsonResponse(data, safe=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required(login_url="login")
|
|
|
|
|
def details_fournisseur(request, id_fournisseur):
|
|
|
|
|
"""Affichez les détails d'un fournisseur spécifique.
|
|
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
|
----------
|
|
|
|
|
request : HttpRequest
|
|
|
|
|
La requête HTTP entrante.
|
|
|
|
|
id_fournisseur : int
|
|
|
|
|
L'identifiant du fournisseur.
|
|
|
|
|
|
|
|
|
|
Returns
|
|
|
|
|
-------
|
|
|
|
|
HttpResponse
|
|
|
|
|
La réponse HTTP avec les détails du fournisseur.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
fournisseur = Fournisseur.objects.get(id=id_fournisseur)
|
|
|
|
|
fournisseur_form = FournisseurForm(instance=fournisseur)
|
|
|
|
|
return render(
|
|
|
|
|
request,
|
|
|
|
|
"gestion_fournisseur/details_fournisseur.html",
|
|
|
|
|
{
|
|
|
|
|
"fournisseur": fournisseur,
|
|
|
|
|
"fournisseurForm": fournisseur_form,
|
|
|
|
|
"id_fournisseur": id_fournisseur,
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
|
2026-01-21 11:03:11 +00:00
|
|
|
@login_required(login_url="login")
|
2025-12-19 09:43:33 +00:00
|
|
|
def mise_a_jour_fournisseur(request, id_fournisseur):
|
|
|
|
|
"""Mettez à jour les informations d'un fournisseur spécifique.
|
|
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
|
----------
|
|
|
|
|
request : HttpRequest
|
|
|
|
|
La requête HTTP entrante.
|
|
|
|
|
id_fournisseur : int
|
|
|
|
|
L'identifiant du fournisseur.
|
|
|
|
|
|
|
|
|
|
Returns
|
|
|
|
|
-------
|
|
|
|
|
HttpResponse
|
|
|
|
|
La réponse HTTP redirigeant vers les détails du fournisseur.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
fournisseur = Fournisseur.objects.get(id=id_fournisseur)
|
|
|
|
|
if request.method == "POST":
|
|
|
|
|
form = FournisseurForm(
|
|
|
|
|
request.POST,
|
|
|
|
|
request.FILES,
|
|
|
|
|
instance=fournisseur
|
2026-01-21 11:03:11 +00:00
|
|
|
)
|
2025-12-19 09:43:33 +00:00
|
|
|
if form.is_valid():
|
|
|
|
|
form.save()
|
2026-01-21 11:03:11 +00:00
|
|
|
messages.success(request, "Fournisseur mis à jour avec succès.")
|
|
|
|
|
else:
|
|
|
|
|
messages.error(request, "Erreur lors de la mise à jour du fournisseur.")
|
2025-12-19 09:43:33 +00:00
|
|
|
return redirect(
|
|
|
|
|
"gestion_fournisseur:details_fournisseur",
|
|
|
|
|
id_fournisseur=id_fournisseur
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def liste_livraison_fournisseur(request, id_fournisseur): # noqa: ARG001
|
|
|
|
|
"""Renvoyez la liste des livraisons d'un fournisseur au format JSON.
|
|
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
|
----------
|
|
|
|
|
request : HttpRequest
|
|
|
|
|
La requête HTTP entrante.
|
|
|
|
|
id_fournisseur : int
|
|
|
|
|
L'identifiant du fournisseur.
|
|
|
|
|
|
|
|
|
|
Returns
|
|
|
|
|
-------
|
|
|
|
|
JsonResponse
|
|
|
|
|
La réponse JSON contenant la liste des livraisons du fournisseur.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
commande_fournisseur = [
|
|
|
|
|
{
|
|
|
|
|
"date": c.date_livraison,
|
|
|
|
|
"produit": c.produit.libelle,
|
|
|
|
|
"prix_achat": c.prix_achat,
|
|
|
|
|
"quantite": c.quantite_commander,
|
|
|
|
|
"montant_total": c.quantite_commander * c.prix_achat,
|
|
|
|
|
"date_livraison": c.date_livraison,
|
|
|
|
|
"statut": c.livrer,
|
|
|
|
|
}
|
|
|
|
|
for c in Commander.objects.filter(fournisseur__id=id_fournisseur)
|
|
|
|
|
]
|
|
|
|
|
return JsonResponse(commande_fournisseur, safe=False)
|