suite taxe apprentissage, association partenaire

This commit is contained in:
Arthur ZHU 2022-05-06 01:33:50 +02:00
parent 0485c8769d
commit 48c16d761f
7 changed files with 117 additions and 14 deletions

View File

@ -82,6 +82,7 @@ def _build_string_field(label, required=True, render_kw=None):
class EntreprisesFilterForm(FlaskForm): class EntreprisesFilterForm(FlaskForm):
active = BooleanField("Afficher les entreprises désactivés") active = BooleanField("Afficher les entreprises désactivés")
association = BooleanField("Afficher les associations partenaires")
class EntrepriseCreationForm(FlaskForm): class EntrepriseCreationForm(FlaskForm):
@ -89,6 +90,7 @@ class EntrepriseCreationForm(FlaskForm):
"SIRET (*)", "SIRET (*)",
render_kw={"placeholder": "Numéro composé de 14 chiffres"}, render_kw={"placeholder": "Numéro composé de 14 chiffres"},
) )
association = BooleanField("Association")
nom_entreprise = _build_string_field("Nom de l'entreprise (*)") nom_entreprise = _build_string_field("Nom de l'entreprise (*)")
adresse = _build_string_field("Adresse de l'entreprise (*)") adresse = _build_string_field("Adresse de l'entreprise (*)")
codepostal = _build_string_field("Code postal de l'entreprise (*)") codepostal = _build_string_field("Code postal de l'entreprise (*)")
@ -168,8 +170,8 @@ class EntrepriseCreationForm(FlaskForm):
class EntrepriseModificationForm(FlaskForm): class EntrepriseModificationForm(FlaskForm):
hidden_entreprise_siret = HiddenField()
siret = StringField("SIRET (*)") siret = StringField("SIRET (*)")
association = BooleanField("Association")
nom = _build_string_field("Nom de l'entreprise (*)") nom = _build_string_field("Nom de l'entreprise (*)")
adresse = _build_string_field("Adresse (*)") adresse = _build_string_field("Adresse (*)")
codepostal = _build_string_field("Code postal (*)") codepostal = _build_string_field("Code postal (*)")
@ -179,10 +181,7 @@ class EntrepriseModificationForm(FlaskForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.siret.render_kw = { self.siret.render_kw = {"disabled": ""}
"disabled": "",
"value": self.hidden_entreprise_siret.data,
}
class SiteCreationForm(FlaskForm): class SiteCreationForm(FlaskForm):
@ -624,6 +623,7 @@ class TaxeApprentissageForm(FlaskForm):
validators=[ validators=[
DataRequired(message=CHAMP_REQUIS), DataRequired(message=CHAMP_REQUIS),
NumberRange( NumberRange(
min=1900,
max=int(datetime.now().strftime("%Y")), max=int(datetime.now().strftime("%Y")),
message=f"L'année doit être inférieure ou égale à {int(datetime.now().strftime('%Y'))}", message=f"L'année doit être inférieure ou égale à {int(datetime.now().strftime('%Y'))}",
), ),
@ -661,6 +661,28 @@ class TaxeApprentissageForm(FlaskForm):
return validate return validate
class TaxeApprentissageModificationForm(FlaskForm):
hidden_annee = HiddenField()
annee = IntegerField("Année (*)")
montant = IntegerField(
"Montant (*)",
validators=[
DataRequired(message=CHAMP_REQUIS),
NumberRange(
min=1,
message="Le montant doit être supérieur à 0",
),
],
default=1,
)
notes = TextAreaField("Notes")
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.annee.render_kw = {"disabled": ""}
class EnvoiOffreForm(FlaskForm): class EnvoiOffreForm(FlaskForm):
responsables = FieldList( responsables = FieldList(
_build_string_field( _build_string_field(

View File

@ -10,6 +10,7 @@ class Entreprise(db.Model):
codepostal = db.Column(db.Text) codepostal = db.Column(db.Text)
ville = db.Column(db.Text) ville = db.Column(db.Text)
pays = db.Column(db.Text) pays = db.Column(db.Text)
association = db.Column(db.Boolean, default=False)
visible = db.Column(db.Boolean, default=False) visible = db.Column(db.Boolean, default=False)
active = db.Column(db.Boolean, default=True) active = db.Column(db.Boolean, default=True)
notes_active = db.Column(db.Text) notes_active = db.Column(db.Text)

View File

@ -31,6 +31,7 @@ from app.entreprises.forms import (
EnvoiOffreForm, EnvoiOffreForm,
AjoutFichierForm, AjoutFichierForm,
TaxeApprentissageForm, TaxeApprentissageForm,
TaxeApprentissageModificationForm,
ValidationConfirmationForm, ValidationConfirmationForm,
ImportForm, ImportForm,
PreferencesForm, PreferencesForm,
@ -71,11 +72,14 @@ def index():
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all() logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
if current_user.has_permission(Permission.RelationsEntreprisesChange, None): if current_user.has_permission(Permission.RelationsEntreprisesChange, None):
form = EntreprisesFilterForm() form = EntreprisesFilterForm()
checked = False checked = [False, False]
if request.method == "POST": if request.method == "POST":
checked = form.active.data checked[0] = form.active.data
if checked: checked[1] = form.association.data
if checked[0]:
entreprises = Entreprise.query.filter_by(visible=True) entreprises = Entreprise.query.filter_by(visible=True)
if checked[1]:
entreprises = Entreprise.query.filter_by(association=True)
return render_template( return render_template(
"entreprises/entreprises.html", "entreprises/entreprises.html",
title="Entreprises", title="Entreprises",
@ -317,6 +321,7 @@ def add_entreprise():
entreprise = Entreprise( entreprise = Entreprise(
nom=form.nom_entreprise.data.strip(), nom=form.nom_entreprise.data.strip(),
siret=form.siret.data.strip(), siret=form.siret.data.strip(),
association=form.association.data,
adresse=form.adresse.data.strip(), adresse=form.adresse.data.strip(),
codepostal=form.codepostal.data.strip(), codepostal=form.codepostal.data.strip(),
ville=form.ville.data.strip(), ville=form.ville.data.strip(),
@ -387,7 +392,7 @@ def edit_entreprise(id):
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404( entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"entreprise {id} inconnue" description=f"entreprise {id} inconnue"
) )
form = EntrepriseModificationForm(hidden_entreprise_siret=entreprise.siret) form = EntrepriseModificationForm(siret=entreprise.siret)
if form.validate_on_submit(): if form.validate_on_submit():
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{form.nom.data.strip()}</a>" nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{form.nom.data.strip()}</a>"
if entreprise.nom != form.nom.data.strip(): if entreprise.nom != form.nom.data.strip():
@ -432,6 +437,7 @@ def edit_entreprise(id):
form.pays.data.strip() if form.pays.data.strip() else "FRANCE" form.pays.data.strip() if form.pays.data.strip() else "FRANCE"
) )
db.session.add(log) db.session.add(log)
entreprise.association = form.association.data
db.session.commit() db.session.commit()
flash("L'entreprise a été modifié.") flash("L'entreprise a été modifié.")
return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id)) return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id))
@ -442,6 +448,7 @@ def edit_entreprise(id):
form.codepostal.data = entreprise.codepostal form.codepostal.data = entreprise.codepostal
form.ville.data = entreprise.ville form.ville.data = entreprise.ville
form.pays.data = entreprise.pays form.pays.data = entreprise.pays
form.association.data = entreprise.association
return render_template( return render_template(
"entreprises/form_modification_entreprise.html", "entreprises/form_modification_entreprise.html",
title="Modification entreprise", title="Modification entreprise",
@ -522,6 +529,64 @@ def add_taxe_apprentissage(id):
) )
@bp.route(
"/fiche_entreprise/<int:id_entreprise>/edit_taxe_apprentissage/<int:id_taxe>",
methods=["GET", "POST"],
)
def edit_taxe_apprentissage(id_entreprise, id_taxe):
"""
Permet de modifier une taxe d'apprentissage sur un fiche entreprise
"""
entreprise = Entreprise.query.filter_by(
id=id_entreprise, visible=True
).first_or_404(description=f"entreprise {id_entreprise} inconnue")
taxe = EntrepriseTaxeApprentissage.query.filter_by(id=id_taxe).first_or_404(
description=f"taxe d'apprentissage {id_taxe} inconnue"
)
form = TaxeApprentissageModificationForm(annee=taxe.annee)
if form.validate_on_submit():
taxe.montant = form.montant.data
taxe.notes = form.notes.data.strip()
db.session.commit()
return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id))
elif request.method == "GET":
form.montant.data = taxe.montant
form.notes.data = taxe.notes
return render_template(
"entreprises/form.html",
title="Modification taxe apprentissage",
form=form,
)
@bp.route(
"/fiche_entreprise/<int:id_entreprise>/delete_taxe_apprentissage/<int:id_taxe>",
methods=["GET", "POST"],
)
def delete_taxe_apprentissage(id_entreprise, id_taxe):
"""
Permet de modifier une taxe d'apprentissage sur un fiche entreprise
"""
entreprise = Entreprise.query.filter_by(
id=id_entreprise, visible=True
).first_or_404(description=f"entreprise {id_entreprise} inconnue")
taxe = EntrepriseTaxeApprentissage.query.filter_by(id=id_taxe).first_or_404(
description=f"taxe d'apprentissage {id_taxe} inconnue"
)
form = SuppressionConfirmationForm()
if form.validate_on_submit():
db.session.delete(taxe)
db.session.commit()
flash("La taxe d'apprentissage a été supprimé de la liste.")
return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id))
return render_template(
"entreprises/confirmation_form.html",
title="Supprimer taxe apprentissage",
form=form,
info_message="Cliquez sur le bouton Supprimer pour confirmer votre supression",
)
@bp.route( @bp.route(
"/fiche_entreprise_validation/<int:id>/validate_entreprise", methods=["GET", "POST"] "/fiche_entreprise_validation/<int:id>/validate_entreprise", methods=["GET", "POST"]
) )

View File

@ -116,3 +116,8 @@
border-radius: 10px; border-radius: 10px;
padding: 10px; padding: 10px;
} }
#liste-taxes-apprentissages {
list-style: none;
padding-left: 0;
}

View File

@ -39,7 +39,8 @@
{% if form %} {% if form %}
<form method="POST" action=""> <form method="POST" action="">
{{ form.hidden_tag() }} {{ form.hidden_tag() }}
<input id="active" name="active" type="checkbox" onChange="form.submit()" {% if checked %} checked {% endif %}> <label for="active">Afficher les entreprises désactivés</label> <input id="active" name="active" type="checkbox" onChange="form.submit()" {% if checked[0] %} checked {% endif %}> <label for="active" style="margin-right:20px">Afficher les entreprises désactivés</label>
<input id="association" name="association" type="checkbox" onChange="form.submit()" {% if checked[1] %} checked {% endif %}> <label for="association">Afficher les associations partenaires</label>
</form> </form>
{% endif %} {% endif %}
<table id="table-entreprises"> <table id="table-entreprises">

View File

@ -33,7 +33,10 @@
Adresse : {{ entreprise.adresse }}<br> Adresse : {{ entreprise.adresse }}<br>
Code postal : {{ entreprise.codepostal }}<br> Code postal : {{ entreprise.codepostal }}<br>
Ville : {{ entreprise.ville }}<br> Ville : {{ entreprise.ville }}<br>
Pays : {{ entreprise.pays }} Pays : {{ entreprise.pays }}<br>
{% if entreprise.association %}
Association
{% endif %}
</div> </div>
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %} {% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
@ -41,12 +44,15 @@
Taxe d'apprentissage<br> Taxe d'apprentissage<br>
<a class="btn btn-primary" href="{{ url_for('entreprises.add_taxe_apprentissage', id=entreprise.id) }}">Ajouter taxe apprentissage</a> <a class="btn btn-primary" href="{{ url_for('entreprises.add_taxe_apprentissage', id=entreprise.id) }}">Ajouter taxe apprentissage</a>
<div class="taxe-apprentissage"> <div class="taxe-apprentissage">
<ul> <ul id="liste-taxes-apprentissages">
{% if not taxes|check_taxe_now %} {% if not taxes|check_taxe_now %}
<li>année actuelle : non versé</li> <li>année actuelle : non versé</li>
{% endif %} {% endif %}
{% for taxe in taxes %} {% for taxe in taxes %}
<li>{{ taxe.annee }} : {{ taxe.montant }} euros</li> <li>
<a href="{{ url_for('entreprises.delete_taxe_apprentissage', id_entreprise=entreprise.id, id_taxe=taxe.id) }}"><img title="Supprimer taxe d'apprentissage" alt="supprimer" width="10" height="9" border="0" src="/ScoDoc/static/icons/delete_small_img.png" /></a>
<a href="{{ url_for('entreprises.edit_taxe_apprentissage', id_entreprise=entreprise.id, id_taxe=taxe.id) }}">{{ taxe.annee }}</a> : {{ taxe.montant }} euros
</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>

View File

@ -12,7 +12,10 @@
Adresse : {{ entreprise.adresse }}<br> Adresse : {{ entreprise.adresse }}<br>
Code postal : {{ entreprise.codepostal }}<br> Code postal : {{ entreprise.codepostal }}<br>
Ville : {{ entreprise.ville }}<br> Ville : {{ entreprise.ville }}<br>
Pays : {{ entreprise.pays }} Pays : {{ entreprise.pays }}<br>
{% if entreprise.association %}
Association
{% endif %}
</div> </div>
</div> </div>