118 lines
4.4 KiB
Python
118 lines
4.4 KiB
Python
|
|
from flask import Blueprint, current_app, flash, redirect, render_template, request, url_for
|
||
|
|
from sqlalchemy import text
|
||
|
|
|
||
|
|
from app import db
|
||
|
|
from app.decorators import login_required
|
||
|
|
|
||
|
|
societes_bp = Blueprint("societes", __name__)
|
||
|
|
|
||
|
|
|
||
|
|
@societes_bp.route("/gestion-societes", methods=["GET", "POST"])
|
||
|
|
@login_required
|
||
|
|
def gestion_societes():
|
||
|
|
if request.method == "POST":
|
||
|
|
action = request.form.get("action")
|
||
|
|
soc_id = request.form.get("id")
|
||
|
|
|
||
|
|
nom = request.form.get("nom")
|
||
|
|
forme = request.form.get("forme")
|
||
|
|
capital = request.form.get("capital")
|
||
|
|
siren = request.form.get("siren")
|
||
|
|
siret = request.form.get("siret")
|
||
|
|
rcs = request.form.get("rcs")
|
||
|
|
tva = request.form.get("tva")
|
||
|
|
naf = request.form.get("naf")
|
||
|
|
tel = request.form.get("tel")
|
||
|
|
web = request.form.get("web")
|
||
|
|
mail = request.form.get("mail")
|
||
|
|
|
||
|
|
if action == "creer":
|
||
|
|
try:
|
||
|
|
query = text(
|
||
|
|
"INSERT INTO societe (nom, forme, capital, siren, siret, rcs, "
|
||
|
|
"tva, naf, tel, web, mail) "
|
||
|
|
"VALUES (:nom, :forme, :capital, :siren, :siret, :rcs, :tva, "
|
||
|
|
":naf, :tel, :web, :mail)"
|
||
|
|
)
|
||
|
|
db.session.execute(
|
||
|
|
query,
|
||
|
|
{
|
||
|
|
"nom": nom,
|
||
|
|
"forme": forme,
|
||
|
|
"capital": capital,
|
||
|
|
"siren": siren,
|
||
|
|
"siret": siret,
|
||
|
|
"rcs": rcs,
|
||
|
|
"tva": tva,
|
||
|
|
"naf": naf,
|
||
|
|
"tel": tel,
|
||
|
|
"web": web,
|
||
|
|
"mail": mail,
|
||
|
|
},
|
||
|
|
)
|
||
|
|
db.session.commit()
|
||
|
|
flash("Société créée avec succès.", "success")
|
||
|
|
except Exception as e:
|
||
|
|
db.session.rollback()
|
||
|
|
current_app.logger.error("Erreur création société : %s", e, exc_info=True)
|
||
|
|
flash("Erreur lors de la création de la société.", "danger")
|
||
|
|
|
||
|
|
elif action == "modifier" and soc_id:
|
||
|
|
try:
|
||
|
|
query = text(
|
||
|
|
"UPDATE societe SET nom = :nom, forme = :forme, "
|
||
|
|
"capital = :capital, siren = :siren, siret = :siret, "
|
||
|
|
"rcs = :rcs, tva = :tva, naf = :naf, tel = :tel, web = :web, "
|
||
|
|
"mail = :mail WHERE id = :id"
|
||
|
|
)
|
||
|
|
db.session.execute(
|
||
|
|
query,
|
||
|
|
{
|
||
|
|
"id": soc_id,
|
||
|
|
"nom": nom,
|
||
|
|
"forme": forme,
|
||
|
|
"capital": capital,
|
||
|
|
"siren": siren,
|
||
|
|
"siret": siret,
|
||
|
|
"rcs": rcs,
|
||
|
|
"tva": tva,
|
||
|
|
"naf": naf,
|
||
|
|
"tel": tel,
|
||
|
|
"web": web,
|
||
|
|
"mail": mail,
|
||
|
|
},
|
||
|
|
)
|
||
|
|
db.session.commit()
|
||
|
|
flash("Société modifiée avec succès.", "success")
|
||
|
|
except Exception as e:
|
||
|
|
db.session.rollback()
|
||
|
|
current_app.logger.error("Erreur modification société : %s", e, exc_info=True)
|
||
|
|
flash("Erreur lors de la modification de la société.", "danger")
|
||
|
|
|
||
|
|
return redirect(url_for("societes.gestion_societes"))
|
||
|
|
|
||
|
|
societes_query = text(
|
||
|
|
"SELECT id, nom, forme, capital, siren, siret, rcs, tva, naf, tel, web, "
|
||
|
|
"mail FROM societe ORDER BY id ASC"
|
||
|
|
)
|
||
|
|
result = db.session.execute(societes_query)
|
||
|
|
|
||
|
|
societes = [
|
||
|
|
{
|
||
|
|
"id": row.id,
|
||
|
|
"nom": row.nom if row.nom else "",
|
||
|
|
"forme": row.forme if row.forme else "",
|
||
|
|
"capital": row.capital if row.capital is not None else 0,
|
||
|
|
"siren": row.siren if row.siren is not None else "",
|
||
|
|
"siret": row.siret if row.siret is not None else "",
|
||
|
|
"rcs": row.rcs if row.rcs else "",
|
||
|
|
"tva": row.tva if row.tva else "",
|
||
|
|
"naf": row.naf if row.naf else "",
|
||
|
|
"tel": row.tel if row.tel else "",
|
||
|
|
"web": row.web if row.web else "",
|
||
|
|
"mail": row.mail if row.mail else "",
|
||
|
|
}
|
||
|
|
for row in result
|
||
|
|
]
|
||
|
|
|
||
|
|
return render_template("gestion_societes.html", societes=societes)
|