ajout saisie de notes dans dossier

This commit is contained in:
2021-08-03 18:00:34 +02:00
parent 5e933151ed
commit c0a7f5bd9b
6 changed files with 167 additions and 12 deletions

View File

@@ -340,7 +340,7 @@ def get_status_by_id(request, code):
return results
def get_motifs(request):
query = """SELECT * FROM p_motfs;"""
query = """SELECT * FROM p_motifs;"""
results = request.dbsession.execute(query,).fetchall()
return results
@@ -349,3 +349,36 @@ def get_factures_en_att(request, societe):
FROM facture f JOIN p_statuts s ON f.STATUS = s.CODE WHERE f.societe=:societe AND f.STATUS < 8 ORDER BY f.societe, f.STATUS, f.nomcli;"""
results = request.dbsession.execute(query, {'societe': societe}).fetchall()
return results
def insert_dem_note(request, nodossier, type_note, logged_in):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
# une note ou croquis
query = "INSERT INTO dem_notes (societe, nochantier, type_note, usermaj) VALUES (:societe, :nochantier, :type_note, :logged_in);"
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'type_note': type_note, 'logged_in': logged_in})
def get_dem_notes(request, nodossier, noligne):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
if noligne == '0':
query = "SELECT societe, nochantier, noligne, type_note, libelle FROM dem_notes WHERE societe = :societe AND nochantier = :nochantier ORDER BY libelle;"
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'noligne': noligne}).fetchall()
else:
query = "SELECT * FROM dem_notes WHERE societe = :societe AND nochantier = :nochantier AND noligne = :noligne;"
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'noligne': noligne}).first()
return results
def delete_dem_note(request, nodossier, noligne):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
# une note ou croquis
query = "DELETE FROM dem_notes WHERE societe=:societe AND nochantier=:nochantier AND noligne=:noligne;"
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'noligne': noligne})
def update_dem_note(request, nodossier, noligne, notes):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
# une note ou croquis
query = "UPDATE dem_notes SET notes=:notes WHERE societe=:societe AND nochantier=:nochantier AND noligne=:noligne;"
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'noligne': noligne, 'notes': notes})

View File

@@ -36,12 +36,14 @@ def includeme(config):
# dossier
config.add_route('demandes','/demandes')
config.add_route('demandes_dl','/demandes_dl/{societe}/{email_from}/{email_uid}')
config.add_route('dem_devis','/dem_devis')
config.add_route('delete_img','/delete_img/{nodossier}/{norapport}/{origine}/{nomfic}')
config.add_route('dossier_edit', '/dossier_edit/{nodossier}')
config.add_route('dossier_lookup', '/dossier_lookup')
config.add_route('dossier_select', '/dossier_select/{date}')
config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}')
config.add_route('dossier_view', '/dossier_view/{nodossier}')
config.add_route('note_edit','/note_edit/{nodossier}/{noligne}')
config.add_route('rdf_bill','/rdf_bill/{no_id}')
config.add_route('rdf_client','/rdf_client/{no_id}')
config.add_route('rdf_edit','/rdf_edit/{nodossier}/{date_inter}')
@@ -53,7 +55,6 @@ def includeme(config):
config.add_route('upload_doc', '/upload_doc/{nodossier}/{origine}')
config.add_route('upload_img', '/upload_img/{norapport}/{origine}')
config.add_route('upload_om', '/upload_om')
config.add_route('dem_devis','/dem_devis')
# parametres
config.add_route('parametres', '/parametres')
config.add_route('article_edit', '/article_edit/{ref}')

View File

@@ -14,12 +14,9 @@
<div class="form-group">
<label class="control-label col-sm-2">Type de texte</label>
<div class="col-sm-10">
<label class="radio-inline"><input type="radio" name="ref" value="T1"
tal:attributes="checked ligne.ref=='T1'">Titre</label>
<label class="radio-inline"><input type="radio" name="ref" value="T2"
tal:attributes="checked ligne.ref=='T2'">Sous-titre</label>
<label class="radio-inline"><input type="radio" name="ref" value="TX"
tal:attributes="checked ligne.ref=='TX'">Texte libre</label>
<label class="radio-inline"><input type="radio" name="ref" value="T1" checked>Titre</label>
<label class="radio-inline"><input type="radio" name="ref" value="T2">Sous-titre</label>
<label class="radio-inline"><input type="radio" name="ref" value="TX">Texte libre</label>
</div>
</div>
<div class="form-group">

View File

@@ -282,6 +282,24 @@
<td class="text-center">${detail.usermaj}</td>
</tr>
</table>
<h3 class="text-center">NOTES et CROQUIS</h3>
<p>
<a class="btn btn-success" role="button" href="#"
data-toggle="modal" data-target="#addNote"><span class="glyphicon glyphicon-plus"></span> Notes / Croquis</a>
</p>
<br />
<div class="text-center" tal:repeat="item dem_notes">
<div class="col-sm-3">
<a href="${request.application_url}/note_edit/${nodossier}/${item.noligne}" tal:condition="item.type_note=='NOTE'">
<span class="glyphicon glyphicon-text-size logo-primary"></span>
<h4>${item.libelle}</h4></a>
<a href="${request.application_url}/croquis_edit/${nodossier}/${item.noligne}" tal:condition="item.type_note=='CROQUIS'">
<span class="glyphicon glyphicon-picture logo-primary"></span>
<h4>${item.libelle}</h4></a>
</div>
</div>
</div>
<!-- PANEL RDF -->
<div id="tab_rdf" class="tab-pane fade">
@@ -345,8 +363,8 @@
<div class="col-xs-8">
<select class="form-control" id="motif" name="motif">
<option selected> </option>
<div tal:repeat="item motif">
<option>${item.code} | ${item.libelle}</option>
<div tal:repeat="item motifs">
<option>${item.libelle}</option>
</div>
</select>
</div>
@@ -361,6 +379,34 @@
</div>
</div>
</div>
<!-- Modal : add NOTES et CROQUIS -->
<div class="modal fade" id="addNote" role="dialog" aria-labelledby="addNoteLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Ajouter une note ou un croquis</h4>
</div>
<div class="modal-body">
<!-- The form is placed inside the body of modal -->
<form id="add_justif-form" class="form-horizontal" action="${url}" method="post">
<div class="form-group">
<label class="control-label col-sm-6">Voulez-vous ajouter</label>
<div class="col-sm-6">
<label class="radio-inline"><input type="radio" name="type_note" value="NOTE" checked>une note</label>
<label class="radio-inline"><input type="radio" name="type_note" value="CROQUIS">un croquis</label>
</div>
</div>
<br>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
<button type="submit" class="btn btn-warning" name="form.addNote">Ajouter</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</metal:block>

View File

@@ -0,0 +1,38 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div class="alert alert-danger" tal:condition="message" tal:content="message" />
<div class="row">
<form id="text_edit-form" action="${url}" method="post">
<div class="form-group">
<label class="control-label" for="text-text">Tapez ou dictez le texte :</label>
<textarea class="form-control monospace-font" rows="30" cols="40" id="notes" name="notes">${note.notes}</textarea>
</div>
<p>Modifié le : ${note.modif_le.strftime('%d-%m-%Y')} par ${note.usermaj}
</p>
<div class="form-group">
<a href="${request.application_url}/dossier_view/${nodossier}" class="btn btn-default" role="button">
<span class="glyphicon glyphicon-chevron-left"></span>&nbsp;Annuler</a>
<button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-ok"></span>&nbsp;Enregistrer</button>
<button class="btn btn-warning" type="submit" name="form.deleted">
<span class="glyphicon glyphicon-remove"></span>&nbsp;Supprimer</button>
</div>
</form>
<br />
<br />
</div> <!-- row -->
<script>
$(document).ready(function() {
$('#text_edit-form').formValidation();
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
});
</script>
</div>
</metal:block>

View File

@@ -128,6 +128,8 @@ def dossier_view(request):
status = get_status_by_id(request, '')
motifs = get_motifs(request)
# lire les notes du dossier
dem_notes = get_dem_notes(request, nodossier, '0')
if 'form.close' in request.params:
status = request.params["status"]
@@ -144,6 +146,13 @@ def dossier_view(request):
request.session.flash(u"Le dossier a été cloturé avec succès.", 'success')
return HTTPFound(url)
if 'form.addNote' in request.params:
type_note = request.params["type_note"]
insert_dem_note(request, nodossier, type_note, logged_in)
request.session.flash(u"Le dossier a été cloturé avec succès.", 'success')
return HTTPFound(url)
return {
'page_title': "Dossier : %s" % (nodossier),
'url': url,
@@ -161,6 +170,8 @@ def dossier_view(request):
'access': access,
'status': status,
'motifs': motifs,
'motif': '',
'dem_notes': dem_notes,
}
@view_config(route_name='dossier_selected', permission='view')
@@ -1579,3 +1590,32 @@ def dem_devis(request):
'societe': societe,
'order_option': order_option,
}
@view_config(route_name='note_edit', renderer='../templates/dossier/note_edit.pt', permission='view')
def note_edit(request):
nodossier = request.matchdict['nodossier']
noligne = request.matchdict['noligne']
url = request.route_url('note_edit', nodossier=nodossier, noligne=noligne)
message = ""
note = get_dem_notes(request, nodossier, noligne)
if 'form.submitted' in request.params:
notes = request.params["notes"]
update_dem_note(request, nodossier, noligne, notes)
request.session.flash("'%s' a été modifiée avec succès." % note.libelle, 'success')
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
if 'form.deleted' in request.params:
delete_dem_note(request, nodossier, noligne)
request.session.flash("'%s' a été supprimée avec succès." % note.libelle, 'success')
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
return {
'page_title': note.libelle,
'url': url,
'message': message,
'nodossier': nodossier,
'note': note,
}