ajout saisie de notes dans dossier
This commit is contained in:
@@ -340,7 +340,7 @@ def get_status_by_id(request, code):
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
def get_motifs(request):
|
def get_motifs(request):
|
||||||
query = """SELECT * FROM p_motfs;"""
|
query = """SELECT * FROM p_motifs;"""
|
||||||
results = request.dbsession.execute(query,).fetchall()
|
results = request.dbsession.execute(query,).fetchall()
|
||||||
return results
|
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;"""
|
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()
|
results = request.dbsession.execute(query, {'societe': societe}).fetchall()
|
||||||
return results
|
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})
|
||||||
|
|||||||
@@ -36,12 +36,14 @@ def includeme(config):
|
|||||||
# dossier
|
# dossier
|
||||||
config.add_route('demandes','/demandes')
|
config.add_route('demandes','/demandes')
|
||||||
config.add_route('demandes_dl','/demandes_dl/{societe}/{email_from}/{email_uid}')
|
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('delete_img','/delete_img/{nodossier}/{norapport}/{origine}/{nomfic}')
|
||||||
config.add_route('dossier_edit', '/dossier_edit/{nodossier}')
|
config.add_route('dossier_edit', '/dossier_edit/{nodossier}')
|
||||||
config.add_route('dossier_lookup', '/dossier_lookup')
|
config.add_route('dossier_lookup', '/dossier_lookup')
|
||||||
config.add_route('dossier_select', '/dossier_select/{date}')
|
config.add_route('dossier_select', '/dossier_select/{date}')
|
||||||
config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}')
|
config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}')
|
||||||
config.add_route('dossier_view', '/dossier_view/{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_bill','/rdf_bill/{no_id}')
|
||||||
config.add_route('rdf_client','/rdf_client/{no_id}')
|
config.add_route('rdf_client','/rdf_client/{no_id}')
|
||||||
config.add_route('rdf_edit','/rdf_edit/{nodossier}/{date_inter}')
|
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_doc', '/upload_doc/{nodossier}/{origine}')
|
||||||
config.add_route('upload_img', '/upload_img/{norapport}/{origine}')
|
config.add_route('upload_img', '/upload_img/{norapport}/{origine}')
|
||||||
config.add_route('upload_om', '/upload_om')
|
config.add_route('upload_om', '/upload_om')
|
||||||
config.add_route('dem_devis','/dem_devis')
|
|
||||||
# parametres
|
# parametres
|
||||||
config.add_route('parametres', '/parametres')
|
config.add_route('parametres', '/parametres')
|
||||||
config.add_route('article_edit', '/article_edit/{ref}')
|
config.add_route('article_edit', '/article_edit/{ref}')
|
||||||
|
|||||||
@@ -14,12 +14,9 @@
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-2">Type de texte</label>
|
<label class="control-label col-sm-2">Type de texte</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<label class="radio-inline"><input type="radio" name="ref" value="T1"
|
<label class="radio-inline"><input type="radio" name="ref" value="T1" checked>Titre</label>
|
||||||
tal:attributes="checked ligne.ref=='T1'">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="T2"
|
<label class="radio-inline"><input type="radio" name="ref" value="TX">Texte libre</label>
|
||||||
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>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@@ -282,6 +282,24 @@
|
|||||||
<td class="text-center">${detail.usermaj}</td>
|
<td class="text-center">${detail.usermaj}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</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>
|
</div>
|
||||||
<!-- PANEL RDF -->
|
<!-- PANEL RDF -->
|
||||||
<div id="tab_rdf" class="tab-pane fade">
|
<div id="tab_rdf" class="tab-pane fade">
|
||||||
@@ -345,8 +363,8 @@
|
|||||||
<div class="col-xs-8">
|
<div class="col-xs-8">
|
||||||
<select class="form-control" id="motif" name="motif">
|
<select class="form-control" id="motif" name="motif">
|
||||||
<option selected> </option>
|
<option selected> </option>
|
||||||
<div tal:repeat="item motif">
|
<div tal:repeat="item motifs">
|
||||||
<option>${item.code} | ${item.libelle}</option>
|
<option>${item.libelle}</option>
|
||||||
</div>
|
</div>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@@ -361,6 +379,34 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</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">×</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>
|
</div>
|
||||||
</metal:block>
|
</metal:block>
|
||||||
|
|||||||
38
mondumas/templates/dossier/note_edit.pt
Normal file
38
mondumas/templates/dossier/note_edit.pt
Normal 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> Annuler</a>
|
||||||
|
<button class="btn btn-primary" type="submit" name="form.submitted">
|
||||||
|
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
||||||
|
<button class="btn btn-warning" type="submit" name="form.deleted">
|
||||||
|
<span class="glyphicon glyphicon-remove"></span> 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>
|
||||||
@@ -128,6 +128,8 @@ def dossier_view(request):
|
|||||||
|
|
||||||
status = get_status_by_id(request, '')
|
status = get_status_by_id(request, '')
|
||||||
motifs = get_motifs(request)
|
motifs = get_motifs(request)
|
||||||
|
# lire les notes du dossier
|
||||||
|
dem_notes = get_dem_notes(request, nodossier, '0')
|
||||||
|
|
||||||
if 'form.close' in request.params:
|
if 'form.close' in request.params:
|
||||||
status = request.params["status"]
|
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')
|
request.session.flash(u"Le dossier a été cloturé avec succès.", 'success')
|
||||||
return HTTPFound(url)
|
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 {
|
return {
|
||||||
'page_title': "Dossier : %s" % (nodossier),
|
'page_title': "Dossier : %s" % (nodossier),
|
||||||
'url': url,
|
'url': url,
|
||||||
@@ -161,6 +170,8 @@ def dossier_view(request):
|
|||||||
'access': access,
|
'access': access,
|
||||||
'status': status,
|
'status': status,
|
||||||
'motifs': motifs,
|
'motifs': motifs,
|
||||||
|
'motif': '',
|
||||||
|
'dem_notes': dem_notes,
|
||||||
}
|
}
|
||||||
|
|
||||||
@view_config(route_name='dossier_selected', permission='view')
|
@view_config(route_name='dossier_selected', permission='view')
|
||||||
@@ -1579,3 +1590,32 @@ def dem_devis(request):
|
|||||||
'societe': societe,
|
'societe': societe,
|
||||||
'order_option': order_option,
|
'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,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user