ajout bouton créer DRV dans le suivi du dossier

This commit is contained in:
2018-12-10 15:29:55 +01:00
parent d5c46cd100
commit b4552076e5
8 changed files with 193 additions and 15 deletions

View File

@@ -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
""" """

View File

@@ -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)

View File

@@ -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}')

View File

@@ -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);

View 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>&nbsp;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>

View File

@@ -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>&nbsp;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>

View File

@@ -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,

View File

@@ -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,
}