creation rdv avec saisie chantier en autocompletion
This commit is contained in:
@@ -76,11 +76,14 @@ def update_rdv(request, nodossier, nolig, new_values):
|
||||
else:
|
||||
s = "%s=:%s" % (param, param)
|
||||
|
||||
new_values['societe'] = societe
|
||||
new_values['no_id'] = no_id
|
||||
new_values['nolig'] = nolig
|
||||
query = "UPDATE dem_lig SET %s WHERE societe = :societe AND NO_ID = :no_id AND NOLIG = :nolig ;" % s
|
||||
execute_query(request, query, new_values)
|
||||
if nolig == '0':
|
||||
create_rdv(request, nodossier, new_values['DATEVI'], new_values['HEUREVI'], new_values['COMMENT'], new_values['LISTE'], new_values['USERMAJ'])
|
||||
else:
|
||||
new_values['societe'] = societe
|
||||
new_values['no_id'] = no_id
|
||||
new_values['nolig'] = nolig
|
||||
query = "UPDATE dem_lig SET %s WHERE societe = :societe AND NO_ID = :no_id AND NOLIG = :nolig ;" % s
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
def create_rdv(request, nodossier, dateRDV, heureRDV, type_rdv, agenda, logged_in):
|
||||
societe = nodossier[0:2]
|
||||
|
||||
@@ -8,6 +8,7 @@ def includeme(config):
|
||||
config.add_route('home', '/')
|
||||
config.add_route('affiche_message','/affiche_message/{login}')
|
||||
config.add_route('ajax_codepostal', '/ajax_codepostal')
|
||||
config.add_route('ajax_lookup', '/ajax_lookup')
|
||||
config.add_route('changer_mdp', '/changer_mdp')
|
||||
config.add_route('envoyer_mdp', '/envoyer_mdp')
|
||||
config.add_route('login', '/login')
|
||||
|
||||
@@ -14,16 +14,6 @@
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
<label class="control-label col-sm-2">Dossier en cours :</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="text" name="dossier" value="${mem_nodossier} | ${mem_nomdossier}" readonly />
|
||||
<div class="input-group-btn">
|
||||
<a href="${url_select}" class="btn btn-primary">
|
||||
<span class="glyphicon glyphicon-search"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -57,19 +47,30 @@
|
||||
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
||||
|
||||
<p>
|
||||
Voulez-vous créer un rendez-vous avec : <br />
|
||||
Voulez-vous créer un rendez-vous : <br />
|
||||
</p>
|
||||
<div class="col-xs-offset-3 col-xs-9">
|
||||
<b>le <span id=dateheureRDV>date</span></b><br />
|
||||
</div>
|
||||
<p>pour la société</p>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-8">
|
||||
<p class="text-danger"><b>${mem_nodossier} - ${mem_nomdossier}</p>
|
||||
<p>le <span id=dateheureRDV>date</p>
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<label class="radio-inline"><input type="radio" name="societe" value="PE" checked>PE</label>
|
||||
<label class="radio-inline"><input type="radio" name="societe" value="ME">ME</label>
|
||||
<label class="radio-inline"><input type="radio" name="societe" value="PL">PL</label>
|
||||
<label class="radio-inline"><input type="radio" name="societe" value="PO">PO</label>
|
||||
<label class="radio-inline"><input type="radio" name="societe" value="CD">CD</label>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="dateRDV" id=dateRDV value="date">
|
||||
<input type="hidden" name="heureRDV" id=heureRDV value="heure">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<label>Motif :</label>
|
||||
<label class="col-xs-3 control-label">Nom ou numéro</label>
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="3 caractères minimum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">Motif</label>
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control" id="type_rdv" name="type_rdv">
|
||||
<div tal:repeat="item types_rdv">
|
||||
<option value="${item.LIB}" tal:attributes="selected type_rdv==item.LIB and 'selected' or None">${item.LIB}</option>
|
||||
@@ -77,11 +78,12 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="dateRDV" id=dateRDV value="date">
|
||||
<input type="hidden" name="heureRDV" id=heureRDV value="heure">
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-5 col-sm-offset-4">
|
||||
<button type="submit" class="btn btn-danger" name="form.submitted"
|
||||
tal:condition="mem_nodossier != 'Aucun'">Créer</button>
|
||||
<button type="submit" class="btn btn-danger" name="form.submitted">Créer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -92,11 +94,15 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
</div><!-- content -->
|
||||
<div metal:fill-slot="additional_scripts">
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fullcalendar-scheduler/1.9.4/scheduler.min.js"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/locale/fr.js"></script>
|
||||
<!-- autocomplete plugin -->
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var datePlan = '${datePlan}';
|
||||
@@ -121,6 +127,13 @@
|
||||
element.find('.fc-title').append("<br/>" + event.description);
|
||||
},
|
||||
dayClick: function(date, jsEvent, view) {
|
||||
inputDate = moment(date).format('YYYY-MM-DD');
|
||||
var today = new Date();
|
||||
// disable dayClick for past dates
|
||||
if (date < today)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
$('#dateheureRDV').html(moment(date).format('dddd DD MMMM à HH:mm'));
|
||||
$('#dateRDV').attr('value', moment(date).format('YYYY-MM-DD'));
|
||||
$('#heureRDV').attr('value', moment(date).format('HH:mm'));
|
||||
@@ -136,6 +149,22 @@
|
||||
validating: 'glyphicon glyphicon-refresh'
|
||||
},
|
||||
});
|
||||
$('#name').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_lookup',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: $("input[name='societe']:checked").val() + request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
minLength: 6,
|
||||
appendTo: "#confirmCreate"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3">No dossier</label>
|
||||
<div class="col-sm-9">
|
||||
<span class="form-control-static text-danger">${nodossier} | ${rdv.C_QUALITE} ${rdv.C_NOM}</span>
|
||||
<p class="form-control-static text-danger">${nodossier} | ${rdv.C_QUALITE} ${rdv.C_NOM}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -30,17 +30,24 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3" for="COMMENT">Commentaire</label>
|
||||
<label class="control-label col-sm-3">Motif </label>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" type="text" id=".COMMENT" name="COMMENT" value="${rdv.COMMENT}"
|
||||
placeholder="65 caractères maximum"
|
||||
data-fv-notempty="true"
|
||||
data-fv-notempty-message="Un commentaire est obligatoire"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="65"
|
||||
data-fv-stringlength-message="65 caractères maximum" />
|
||||
<select class="form-control" id="COMMENT" name="COMMENT">
|
||||
<div tal:repeat="item types_rdv">
|
||||
<option value="${item.LIB}" tal:attributes="selected rdv.COMMENT==item.LIB and 'selected' or None">${item.LIB}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3" for="LISTE">RDV avec</label>
|
||||
<div class="col-sm-9">
|
||||
<select class="form-control" id="LISTE" name="LISTE">
|
||||
<div tal:repeat="item agendas">
|
||||
<option value="${item.CD_UTI}" tal:attributes="selected rdv.LISTE==item.CD_UTI and 'selected' or None">${item.NOM}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -29,32 +29,34 @@ def rdv_edit(request):
|
||||
logged_in = request.authenticated_userid.upper()
|
||||
nodossier = request.matchdict['nodossier']
|
||||
nolig = request.matchdict['nolig']
|
||||
url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig)
|
||||
message = ''
|
||||
|
||||
# lire la liste des users avec agenda
|
||||
agendas = get_users_agenda(request, '')
|
||||
# liste des types de rdv
|
||||
types_rdv = get_types_rdv(request)
|
||||
|
||||
# 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))
|
||||
# nouveau
|
||||
rdv = {}
|
||||
rdv['C_QUALITE'] = ''
|
||||
rdv['C_NOM'] = ''
|
||||
rdv['rdv_debut'] = datetime.today()
|
||||
rdv['COMMENT'] = 'RDV DEVIS'
|
||||
rdv['LISTE'] = logged_in
|
||||
rdv['DATEMAJ'] = date.today()
|
||||
rdv['USERMAJ'] = logged_in
|
||||
page_title = "Nouveau rendez-vous"
|
||||
else:
|
||||
# lire le rendez-vous
|
||||
rdv = get_dossier_rdv_by_no(request, nodossier, nolig)
|
||||
if not rdv:
|
||||
request.session.flash(u"Rendez-vous non trouvé : %s" % nodossier, 'warning')
|
||||
return HTTPFound(location=request.route_url('agenda', date='today'))
|
||||
|
||||
url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig)
|
||||
|
||||
message = ''
|
||||
# lire le rendez-vous
|
||||
rdv = get_dossier_rdv_by_no(request, nodossier, nolig)
|
||||
if not rdv:
|
||||
request.session.flash(u"Rendez-vous non trouvé : %s" % nodossier, 'warning')
|
||||
return HTTPFound(location=request.route_url('agenda', date='today'))
|
||||
|
||||
# memorize nodossier et nom dossier
|
||||
request.session['mem_nodossier'] = nodossier
|
||||
request.session['mem_nomdossier'] = '%s %s' % (rdv.C_QUALITE, rdv.C_NOM)
|
||||
page_title= "Modification du rdv du %s" % (rdv.rdv_debut.strftime('%d-%m-%Y %H:%M'))
|
||||
page_title= "Modification du rdv du %s" % (rdv.rdv_debut.strftime('%d-%m-%Y %H:%M'))
|
||||
|
||||
if 'form.submitted' in request.params:
|
||||
new_values = {}
|
||||
@@ -64,11 +66,11 @@ def rdv_edit(request):
|
||||
|
||||
if new_values:
|
||||
new_values['USERMAJ'] = logged_in.upper()
|
||||
|
||||
ddate = datetime.strptime(new_values['rdv_debut'], '%d-%m-%Y %H:%M')
|
||||
import pdb;pdb.set_trace()
|
||||
update_rdv(request, nodossier, nolig, new_values)
|
||||
request.session.flash(u"Le rendez-vous a été mis à jour avec succès.", 'success')
|
||||
|
||||
return HTTPFound(location=request.route_url('agenda', date=rdv.rdv_debut.strftime('%Y-%m-%d')))
|
||||
return HTTPFound(location=request.route_url('agenda', date=ddate.strftime('%Y-%m-%d')))
|
||||
|
||||
if 'form.deleted' in request.params:
|
||||
delete_rdv(request, nodossier, nolig)
|
||||
@@ -81,6 +83,8 @@ def rdv_edit(request):
|
||||
'logged_in': logged_in,
|
||||
'nodossier': nodossier,
|
||||
'nolig': nolig,
|
||||
'types_rdv': types_rdv,
|
||||
'agendas': agendas,
|
||||
'rdv': rdv,
|
||||
'message': message,
|
||||
}
|
||||
@@ -98,14 +102,6 @@ def agenda(request):
|
||||
url = request.route_url('agenda', date=datePlan)
|
||||
url_select = request.route_url('dossier_select', date=datePlan)
|
||||
|
||||
# recall code et nom élève
|
||||
if 'mem_nodossier' in request.session:
|
||||
mem_nodossier = request.session['mem_nodossier']
|
||||
mem_nomdossier = request.session['mem_nomdossier']
|
||||
else:
|
||||
mem_nodossier = 'Aucun'
|
||||
mem_nomdossier = 'dossier sélectionné'
|
||||
|
||||
# liste des types de rdv
|
||||
types_rdv = get_types_rdv(request)
|
||||
type_rdv = 'RDV DEVIS'
|
||||
@@ -126,13 +122,17 @@ def agenda(request):
|
||||
agenda = request.params["agenda"]
|
||||
|
||||
# -- CREER un rendez-vous
|
||||
if 'form.submitted' in request.params and mem_nodossier != 'Aucun':
|
||||
if 'form.submitted' in request.params:
|
||||
dateRDV = request.params['dateRDV']
|
||||
heureRDV = request.params['heureRDV']
|
||||
type_rdv = request.params['type_rdv']
|
||||
|
||||
create_rdv(request, mem_nodossier, dateRDV, heureRDV, type_rdv, agenda, logged_in.upper())
|
||||
societe = request.params['societe']
|
||||
name = request.params['name'].split(' | ')
|
||||
create_rdv(request, name[1], dateRDV, heureRDV, type_rdv, agenda, logged_in.upper())
|
||||
request.session.flash(u"Le rendez-vous a été CREE avec succès.", 'success')
|
||||
# position le planning à le date de crétaion du RDV
|
||||
datePlan = dateRDV
|
||||
|
||||
rows = get_rendez_vous(request, agenda)
|
||||
|
||||
@@ -174,8 +174,6 @@ def agenda(request):
|
||||
'types_rdv': types_rdv,
|
||||
'type_rdv': type_rdv,
|
||||
'message': message,
|
||||
'mem_nodossier': mem_nodossier,
|
||||
'mem_nomdossier': mem_nomdossier,
|
||||
'url': url,
|
||||
'url_select': url_select,
|
||||
'datePlan': datePlan,
|
||||
|
||||
@@ -26,6 +26,9 @@ import json
|
||||
|
||||
from ..models.default import *
|
||||
from ..models.agenda import *
|
||||
from ..models.dossier import (
|
||||
get_chantiers_byName
|
||||
)
|
||||
|
||||
def to_decimal(x):
|
||||
import decimal
|
||||
@@ -277,4 +280,19 @@ def ajax_codepostal(request):
|
||||
|
||||
return Response(json.dumps(liste))
|
||||
|
||||
@view_config(route_name='ajax_lookup')
|
||||
def ajax_lookup(request):
|
||||
recherche = request.GET['recherche']
|
||||
societe = recherche[:2] # 1er car.
|
||||
name = recherche[2:]
|
||||
|
||||
# lire les chantiers
|
||||
chantiers = get_chantiers_byName(request, societe, name)
|
||||
liste=[]
|
||||
for row in chantiers:
|
||||
d = "%s | %s-%s"% (row.chantier, societe, row.numero)
|
||||
liste.append(d)
|
||||
|
||||
return Response(json.dumps(liste))
|
||||
|
||||
|
||||
|
||||
@@ -185,9 +185,6 @@ def dossier_selected(request):
|
||||
|
||||
# fiche dossier
|
||||
dossier = get_dossier_by_no(request, nodossier)
|
||||
# memorize nodossier et nom dossier
|
||||
request.session['mem_nodossier'] = nodossier
|
||||
request.session['mem_nomdossier'] = '%s %s' % (dossier.C_QUALITE, dossier.C_NOM)
|
||||
if goto == 'dossier_view':
|
||||
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user