ajout bouton créer DRV dans le suivi du dossier
This commit is contained in:
@@ -20,10 +20,15 @@ def execute_query(request, query, params):
|
|||||||
mark_changed(request.dbsession)
|
mark_changed(request.dbsession)
|
||||||
transaction.commit()
|
transaction.commit()
|
||||||
|
|
||||||
def get_users_agenda(request):
|
def get_users_agenda(request, user):
|
||||||
|
if user == '':
|
||||||
""" lire la liste des users ayant un agenda"""
|
""" lire la liste des users ayant un agenda"""
|
||||||
query = "SELECT * FROM p_users WHERE cd_uti != 'N' and agenda != 0 AND actif != 0 ORDER BY nom;"
|
query = "SELECT * FROM p_users WHERE cd_uti != 'N' and agenda != 0 AND actif != 0 ORDER BY nom;"
|
||||||
results = request.dbsession.execute(query).fetchall()
|
results = request.dbsession.execute(query).fetchall()
|
||||||
|
else:
|
||||||
|
""" lire le user ayant un agenda"""
|
||||||
|
query = "SELECT * FROM p_users WHERE cd_uti = :user and agenda != 0 AND actif != 0 ORDER BY nom;"
|
||||||
|
results = request.dbsession.execute(query, {'user': user}).first()
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def get_types_rdv(request):
|
def get_types_rdv(request):
|
||||||
@@ -39,7 +44,7 @@ def get_rendez_vous(request, itc):
|
|||||||
datedeb = d.strftime('%Y-%m-01')
|
datedeb = d.strftime('%Y-%m-01')
|
||||||
|
|
||||||
# lire les rdv de l'ITC
|
# lire les rdv de l'ITC
|
||||||
query = """SELECT CONCAT(l.societe,"-",l.no_id) as nodossier, l.nolig, l.rdv_debut, l.rdv_fin, e.c_qualite, e.c_nom, e.c_ville FROM dem_lig l
|
query = """SELECT CONCAT(l.societe,"-",l.no_id) as nodossier, l.nolig, l.rdv_debut, l.rdv_fin, e.c_qualite, e.c_nom, e.c_ville, e.c_cp FROM dem_lig l
|
||||||
INNER JOIN dem_devis e ON l.societe=e.societe AND l.no_id=e.no_id
|
INNER JOIN dem_devis e ON l.societe=e.societe AND l.no_id=e.no_id
|
||||||
WHERE l.datevi >= :datedeb AND l.liste=:itc ORDER BY l.datevi, l.heurevi
|
WHERE l.datevi >= :datedeb AND l.liste=:itc ORDER BY l.datevi, l.heurevi
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -145,3 +145,17 @@ def get_docs_attaches(request, nomrep, nodossier):
|
|||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
def update_dossier(request, nodossier, new_values):
|
||||||
|
societe = nodossier[0:2]
|
||||||
|
nochantier = int(nodossier[3:])
|
||||||
|
|
||||||
|
s = ''
|
||||||
|
for param in new_values.keys():
|
||||||
|
if s:
|
||||||
|
s += ",%s=:%s" % (param, param)
|
||||||
|
else:
|
||||||
|
s = "%s=:%s" % (param, param)
|
||||||
|
new_values['societe'] = societe
|
||||||
|
new_values['nochantier'] = nochantier
|
||||||
|
query = u"UPDATE dem_devis SET %s WHERE societe=:societe AND no_id=:nochantier" % s
|
||||||
|
execute_query(request, query, new_values)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ def includeme(config):
|
|||||||
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')
|
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')
|
||||||
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
|
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
|
||||||
# dossier
|
# dossier
|
||||||
|
config.add_route('dossier_edit', '/dossier_edit/{nodossier}')
|
||||||
config.add_route('dossier_lookup', '/chantier_lookup')
|
config.add_route('dossier_lookup', '/chantier_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}')
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ $(document).ready(function() {
|
|||||||
weekends: false,
|
weekends: false,
|
||||||
height: 'auto',
|
height: 'auto',
|
||||||
minTime: "07:00:00",
|
minTime: "07:00:00",
|
||||||
maxTime: "21:00:00",
|
maxTime: "20:00:00",
|
||||||
events:${fullcalendar_events},
|
events:${fullcalendar_events},
|
||||||
eventRender: function(event, element){
|
eventRender: function(event, element){
|
||||||
element.find('.fc-title').append("<br/>" + event.description);
|
element.find('.fc-title').append("<br/>" + event.description);
|
||||||
|
|||||||
103
mondumas/templates/dossier/dossier_edit.pt
Normal file
103
mondumas/templates/dossier/dossier_edit.pt
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
<metal:block use-macro="main_template">
|
||||||
|
<div metal:fill-slot="content">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<form id="change-dossier-details-form" class="form-horizontal" action="${url}" method="post" tal:condition="dossier"
|
||||||
|
data-fv-framework="bootstrap"
|
||||||
|
data-fv-icon-valid="glyphicon glyphicon-ok"
|
||||||
|
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
||||||
|
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-4 control-label">Adresse email élève</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<input class="form-control" type="text" name="C_EMAIL"
|
||||||
|
value="${dossier.C_EMAIL}" placeholder="50 caractères maximum"
|
||||||
|
data-fv-emailaddress="true"
|
||||||
|
data-fv-emailaddress-message="L'adresse email n'est pas valide" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-4 control-label">Etage</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<input class="form-control" type="text" name="C_ETAGE"
|
||||||
|
value="${dossier.C_ETAGE}" placeholder="10 caractères maximum"
|
||||||
|
data-fv-stringlength="true"
|
||||||
|
data-fv-stringlength-max="10"
|
||||||
|
data-fv-stringlength-message="10 caractères maximum" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-4 control-label">Code d'accès</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<input class="form-control" type="text" name="C_CODE"
|
||||||
|
value="${dossier.C_CODE}" placeholder="20 caractères maximum"
|
||||||
|
data-fv-stringlength="true"
|
||||||
|
data-fv-stringlength-max="20"
|
||||||
|
data-fv-stringlength-message="20 caractères maximum" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-4 control-label">Téléphone fixe</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<input class="form-control" type="text" name="C_TEL1"
|
||||||
|
value="${dossier.C_TEL1}" placeholder="20 caractères maximum"
|
||||||
|
data-fv-phone="true"
|
||||||
|
data-fv-phone-country="FR"
|
||||||
|
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-4 control-label">Téléphone prof.</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<input class="form-control" type="text" name="C_TEL2"
|
||||||
|
value="${dossier.C_TEL2}" placeholder="20 caractères maximum"
|
||||||
|
data-fv-phone="true"
|
||||||
|
data-fv-phone-country="FR"
|
||||||
|
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-4 control-label">Téléphone mobile</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<input class="form-control" type="text" name="C_TELP"
|
||||||
|
value="${dossier.C_TELP}" placeholder="20 caractères maximum"
|
||||||
|
data-fv-phone="true"
|
||||||
|
data-fv-phone-country="FR"
|
||||||
|
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-4 control-label">Téléphone fax</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<input class="form-control" type="text" name="C_FAX"
|
||||||
|
value="${dossier.C_FAX}" placeholder="20 caractères maximum"
|
||||||
|
data-fv-phone="true"
|
||||||
|
data-fv-phone-country="FR"
|
||||||
|
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-xs-offset-4 col-xs-8">
|
||||||
|
<a class="btn btn-default" href="${request.application_url}/dossier_view/${nodossier}">
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div> <!-- row -->
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#change-dossier-details-form').formValidation();
|
||||||
|
$('form input').on('keypress', function(e) {
|
||||||
|
return e.which !== 13;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</metal:block>
|
||||||
@@ -7,7 +7,11 @@
|
|||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<table class="table table-condensed ">
|
<table class="table table-condensed ">
|
||||||
<tr>
|
<tr>
|
||||||
<td><h4>CHANTIER</h4></td>
|
<td>
|
||||||
|
<h4>CHANTIER</h4>
|
||||||
|
<a href="${request.application_url}/dossier_edit/${nodossier}" class="btn btn-primary" role="button">
|
||||||
|
<span class="glyphicon glyphicon-pencil"></span> Modifier</a>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<h4>${dossier.C_QUALITE} ${dossier.C_NOM}</h4>
|
<h4>${dossier.C_QUALITE} ${dossier.C_NOM}</h4>
|
||||||
${dossier.C_ADR}<br />
|
${dossier.C_ADR}<br />
|
||||||
@@ -116,8 +120,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="panel-suivi" class="panel-collapse collapse">
|
<div id="panel-suivi" class="panel-collapse collapse">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<p><a class="btn btn-success" role="button" href="${request.route_url('suivi_edit', nodossier=nodossier, nolig='0')}">
|
<p>
|
||||||
<span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a></p>
|
<a class="btn btn-success" role="button" href="${request.route_url('suivi_edit', nodossier=nodossier, nolig='0')}">
|
||||||
|
<span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a>
|
||||||
|
<a class="btn btn-warning" role="button" href="${request.route_url('rdv_edit', nodossier=nodossier, nolig='0')}">
|
||||||
|
<span class="glyphicon glyphicon-calendar"></span> Nouveau rendez-vous</a>
|
||||||
|
</p>
|
||||||
<table class="table table-bordered table-condensed">
|
<table class="table table-bordered table-condensed">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Date</th>
|
<th>Date</th>
|
||||||
@@ -127,10 +135,14 @@
|
|||||||
<th class="text-center">Par</th>
|
<th class="text-center">Par</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr tal:repeat="detail details">
|
<tr tal:repeat="detail details">
|
||||||
<td>
|
<td tal:condition="detail.DATEVI==None">
|
||||||
<a href="${request.route_url('suivi_edit', nodossier=nodossier, nolig=detail.NOLIG)}">
|
<a href="${request.route_url('suivi_edit', nodossier=nodossier, nolig=detail.NOLIG)}">
|
||||||
${detail.DATE.strftime('%d-%m-%Y')}</a>
|
${detail.DATE.strftime('%d-%m-%Y')}</a>
|
||||||
</td>
|
</td>
|
||||||
|
<td tal:condition="detail.DATEVI!=None">
|
||||||
|
<a href="${request.route_url('rdv_edit', nodossier=nodossier, nolig=detail.NOLIG)}">
|
||||||
|
${detail.DATE.strftime('%d-%m-%Y')}</a>
|
||||||
|
</td>
|
||||||
<td tal:condition="detail.COMMENT.startswith('!!')" class="text-danger">
|
<td tal:condition="detail.COMMENT.startswith('!!')" class="text-danger">
|
||||||
<b>${detail.COMMENT} ${detail.COMMENTVI}</b>
|
<b>${detail.COMMENT} ${detail.COMMENTVI}</b>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -27,9 +27,22 @@ from ..models.dossier import *
|
|||||||
@view_config(route_name='rdv_edit', renderer='../templates/agenda/rdv_edit.pt', permission='view')
|
@view_config(route_name='rdv_edit', renderer='../templates/agenda/rdv_edit.pt', permission='view')
|
||||||
def rdv_edit(request):
|
def rdv_edit(request):
|
||||||
|
|
||||||
logged_in = request.authenticated_userid
|
logged_in = request.authenticated_userid.upper()
|
||||||
nodossier = request.matchdict['nodossier']
|
nodossier = request.matchdict['nodossier']
|
||||||
nolig = request.matchdict['nolig']
|
nolig = request.matchdict['nolig']
|
||||||
|
|
||||||
|
# creation d'un rdv ?
|
||||||
|
if nolig == '0':
|
||||||
|
# lire le user avec agenda
|
||||||
|
agenda = get_users_agenda(request, logged_in)
|
||||||
|
if agenda:
|
||||||
|
aujourdhui = datetime.now()
|
||||||
|
create_rdv(request, nodossier, aujourdhui.strftime("%Y-%m-%d"), aujourdhui.strftime("%H:00"), 'RDV DEVIS', logged_in, logged_in)
|
||||||
|
request.session.flash(u"Le rendez-vous a été CREE avec succès.", 'success')
|
||||||
|
else:
|
||||||
|
request.session.flash(u"Vous ne pouvez pas créer de rendez-vous.", 'danger')
|
||||||
|
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
|
||||||
|
|
||||||
url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig)
|
url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig)
|
||||||
|
|
||||||
message = ''
|
message = ''
|
||||||
@@ -99,7 +112,7 @@ def agenda(request):
|
|||||||
type_rdv = u'RDV DEVIS'
|
type_rdv = u'RDV DEVIS'
|
||||||
|
|
||||||
# liste des users avec agenda
|
# liste des users avec agenda
|
||||||
agendas = get_users_agenda(request)
|
agendas = get_users_agenda(request, '')
|
||||||
|
|
||||||
# le user a-t-il un agenda ?
|
# le user a-t-il un agenda ?
|
||||||
agenda = 'JMD'
|
agenda = 'JMD'
|
||||||
@@ -141,7 +154,7 @@ def agenda(request):
|
|||||||
|
|
||||||
json_event = {
|
json_event = {
|
||||||
'title': '%s %s' % (row.c_qualite, row.c_nom),
|
'title': '%s %s' % (row.c_qualite, row.c_nom),
|
||||||
'description': row.c_ville.capitalize(),
|
'description': '%s %s' % (row.c_cp, row.c_ville.capitalize()),
|
||||||
'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'),
|
'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'),
|
'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
'allDay': False,
|
'allDay': False,
|
||||||
@@ -174,7 +187,7 @@ def planning(request):
|
|||||||
# {"id":"a","title":"Auditorium A"}
|
# {"id":"a","title":"Auditorium A"}
|
||||||
ressources = []
|
ressources = []
|
||||||
# liste des users avec agenda
|
# liste des users avec agenda
|
||||||
users = get_users_agenda(request)
|
users = get_users_agenda(request, '')
|
||||||
for row in users:
|
for row in users:
|
||||||
json_ressources = {
|
json_ressources = {
|
||||||
'id': row.CD_UTI,
|
'id': row.CD_UTI,
|
||||||
@@ -203,7 +216,7 @@ def planning(request):
|
|||||||
json_event = {
|
json_event = {
|
||||||
'resourceId': user.CD_UTI,
|
'resourceId': user.CD_UTI,
|
||||||
'title': row.c_nom,
|
'title': row.c_nom,
|
||||||
'description': row.c_ville.capitalize(),
|
'description': '%s %s' % (row.c_cp, row.c_ville.capitalize()),
|
||||||
'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'),
|
'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'),
|
'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
'allDay': False,
|
'allDay': False,
|
||||||
|
|||||||
@@ -218,3 +218,33 @@ def suivi_edit(request):
|
|||||||
'suivi': suivi,
|
'suivi': suivi,
|
||||||
'message': message,
|
'message': message,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@view_config(route_name='dossier_edit', renderer='../templates/dossier/dossier_edit.pt', permission='view')
|
||||||
|
def dossier_edit(request):
|
||||||
|
logged_in = request.authenticated_userid
|
||||||
|
nodossier = request.matchdict['nodossier']
|
||||||
|
url = request.route_url('dossier_edit', nodossier=nodossier)
|
||||||
|
|
||||||
|
dossier = get_dossier_by_no(request, nodossier)
|
||||||
|
if not dossier:
|
||||||
|
request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger')
|
||||||
|
return HTTPFound(location=request.route_url('dossier_lookup'))
|
||||||
|
|
||||||
|
if 'form.submitted' in request.params:
|
||||||
|
new_values = {}
|
||||||
|
for param, db_value in dossier.items():
|
||||||
|
if param in request.params and request.params[param] != db_value:
|
||||||
|
new_values[param] = request.params[param]
|
||||||
|
|
||||||
|
if new_values:
|
||||||
|
update_dossier(request, nodossier, new_values)
|
||||||
|
request.session.flash(u"Le dossier a été mis à jour avec succès.", 'success')
|
||||||
|
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
|
||||||
|
|
||||||
|
return {
|
||||||
|
'page_title': u"Modifier le dossier : %s" % nodossier,
|
||||||
|
'url': url,
|
||||||
|
'dossier': dossier,
|
||||||
|
'nodossier': nodossier,
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user