ajout chantier_lookup.pt
This commit is contained in:
@@ -26,48 +26,37 @@ def get_users_agenda(request):
|
|||||||
results = request.dbsession.execute(query).fetchall()
|
results = request.dbsession.execute(query).fetchall()
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def get_table(code):
|
|
||||||
if code == 'DD':
|
|
||||||
table = 'dem_devis'
|
|
||||||
elif code == 'OS':
|
|
||||||
table = 'ordres'
|
|
||||||
else:
|
|
||||||
table = 'rdvous'
|
|
||||||
return table
|
|
||||||
|
|
||||||
def get_table_details(code):
|
|
||||||
if code == 'DD':
|
|
||||||
table = 'dem_lig'
|
|
||||||
elif code == 'OS':
|
|
||||||
table = 'ordres_lig'
|
|
||||||
else:
|
|
||||||
table = 'rdvous_lig'
|
|
||||||
return table
|
|
||||||
|
|
||||||
|
|
||||||
def get_dossier_by_no(request,nodossier):
|
def get_dossier_by_no(request,nodossier):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
table = get_table(nodossier[3:5])
|
no_id = nodossier[3:]
|
||||||
no_id = nodossier[6:]
|
|
||||||
query = """
|
query = """
|
||||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM %s d
|
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM dem_devis d
|
||||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||||
where d.societe = '%s' and d.no_id=%s;""" % (table, societe, no_id);
|
where d.societe = '%s' and d.no_id=%s;""" % (societe, no_id);
|
||||||
results = request.dbsession.execute(query).first()
|
results = request.dbsession.execute(query).first()
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def get_dossier_rdv_by_no(request,nodossier, nolig):
|
def get_dossier_rdv_by_no(request,nodossier, nolig):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
table = get_table_details(nodossier[3:5])
|
no_id = nodossier[3:]
|
||||||
no_id = nodossier[6:]
|
|
||||||
if nolig == '0':
|
if nolig == '0':
|
||||||
query = "SELECT * FROM %s where societe = '%s' and no_id=%s;" % (table, societe, no_id)
|
query = "SELECT * FROM dem_lig where societe = '%s' and no_id=%s;" % (societe, no_id)
|
||||||
results = request.dbsession.execute(query).fetchall()
|
results = request.dbsession.execute(query).fetchall()
|
||||||
else:
|
else:
|
||||||
query = "SELECT * FROM %s where societe = '%s' and no_id=%s and nolig=%s;" % (table, societe, no_id, nolig)
|
query = "SELECT * FROM dem_lig where societe = '%s' and no_id=%s and nolig=%s;" % (societe, no_id, nolig)
|
||||||
results = request.dbsession.execute(query).first()
|
results = request.dbsession.execute(query).first()
|
||||||
|
|
||||||
|
return results
|
||||||
|
|
||||||
|
def get_documents_byChantier(request,nodossier):
|
||||||
|
societe = nodossier[0:2]
|
||||||
|
no_id = nodossier[3:]
|
||||||
|
|
||||||
|
query = "CALL spGET_DOSSIERS_byNumeo('%s',%s);" % (societe, no_id)
|
||||||
|
results = request.dbsession.execute(query).fetchall()
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def get_rendez_vous(request, itc):
|
def get_rendez_vous(request, itc):
|
||||||
@@ -77,7 +66,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,"-DD-",l.no_id) as nodossier, l.rdv_debut, l.rdv_fin, e.c_nom FROM dem_lig l
|
query = """SELECT CONCAT(l.societe,"-",l.no_id) as nodossier, l.rdv_debut, l.rdv_fin, e.c_nom 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
|
||||||
"""
|
"""
|
||||||
@@ -86,16 +75,14 @@ def get_rendez_vous(request, itc):
|
|||||||
|
|
||||||
def delete_rdv(request, nodossier, nolig):
|
def delete_rdv(request, nodossier, nolig):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
table = get_table_details(nodossier[3:5])
|
no_id = nodossier[3:]
|
||||||
no_id = nodossier[6:]
|
|
||||||
|
|
||||||
query = "DELETE FROM %s where societe = '%s' and no_id=%s and nolig=%s;" % (table, societe, no_id, nolig)
|
query = "DELETE FROM dem_lig where societe = '%s' and no_id=%s and nolig=%s;" % (societe, no_id, nolig)
|
||||||
execute_query(request, query, {})
|
execute_query(request, query, {})
|
||||||
|
|
||||||
def update_rdv(request, nodossier, nolig, comment, commentvi, date_rdv):
|
def update_rdv(request, nodossier, nolig, comment, commentvi, date_rdv):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
table = get_table_details(nodossier[3:5])
|
no_id = nodossier[3:]
|
||||||
no_id = nodossier[6:]
|
|
||||||
|
|
||||||
# formater les champs
|
# formater les champs
|
||||||
ddate = datetime.strptime(date_rdv, '%d-%m-%Y %H:%M')
|
ddate = datetime.strptime(date_rdv, '%d-%m-%Y %H:%M')
|
||||||
@@ -104,9 +91,9 @@ def update_rdv(request, nodossier, nolig, comment, commentvi, date_rdv):
|
|||||||
auj = date.today().strftime("%Y-%m-%d")
|
auj = date.today().strftime("%Y-%m-%d")
|
||||||
|
|
||||||
if nolig == '0':
|
if nolig == '0':
|
||||||
query = "INSERT INTO %s SET societe='%s',no_id=%s,date='%s',datevi='%s',heurevi='%s',comment='%s',commentvi='%s'" % (table, societe, no_id,auj,datevi, heurevi, comment, commentvi)
|
query = "INSERT INTO dem_devis SET societe='%s',no_id=%s,date='%s',datevi='%s',heurevi='%s',comment='%s',commentvi='%s'" % (societe, no_id,auj,datevi, heurevi, comment, commentvi)
|
||||||
else:
|
else:
|
||||||
query = "UPDATE %s SET datevi='%s', heurevi='%s', comment='%s', commentvi='%s' where societe = '%s' and no_id=%s and nolig=%s;" % (table, datevi, heurevi, comment, commentvi, societe, no_id, nolig)
|
query = "UPDATE dem_ligs SET datevi='%s', heurevi='%s', comment='%s', commentvi='%s' where societe = '%s' and no_id=%s and nolig=%s;" % (datevi, heurevi, comment, commentvi, societe, no_id, nolig)
|
||||||
|
|
||||||
execute_query(request, query, {})
|
execute_query(request, query, {})
|
||||||
|
|
||||||
|
|||||||
@@ -81,3 +81,9 @@ def delete_membre(request, cd_uti):
|
|||||||
query = "DELETE FROM p_users WHERE cd_uti = :cd_uti ;"
|
query = "DELETE FROM p_users WHERE cd_uti = :cd_uti ;"
|
||||||
execute_query(request, query, {'cd_uti': cd_uti})
|
execute_query(request, query, {'cd_uti': cd_uti})
|
||||||
|
|
||||||
|
def get_chantiers_byName(request, societe, name, tous):
|
||||||
|
|
||||||
|
query = "CALL spGET_CHANTIERS_byName('%s','%s');" % (societe, name)
|
||||||
|
results = request.dbsession.execute(query).fetchall()
|
||||||
|
return results
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ def includeme(config):
|
|||||||
config.add_route('home', '/')
|
config.add_route('home', '/')
|
||||||
config.add_route('agenda', '/agenda')
|
config.add_route('agenda', '/agenda')
|
||||||
config.add_route('planning', '/planning')
|
config.add_route('planning', '/planning')
|
||||||
|
config.add_route('chantier_lookup', '/chantier_lookup')
|
||||||
config.add_route('changer_mdp', '/changer_mdp')
|
config.add_route('changer_mdp', '/changer_mdp')
|
||||||
config.add_route('dossier_view', '/dossier_view/{nodossier}')
|
config.add_route('dossier_view', '/dossier_view/{nodossier}')
|
||||||
config.add_route('rdv_edit','/rdv_edit/{nodossier}/{nolig}')
|
config.add_route('rdv_edit','/rdv_edit/{nodossier}/{nolig}')
|
||||||
|
|||||||
@@ -82,30 +82,74 @@
|
|||||||
</div>
|
</div>
|
||||||
</div> <!-- row -->
|
</div> <!-- row -->
|
||||||
|
|
||||||
<h3>SUIVI</h3>
|
<div class="panel-group" id="accordion">
|
||||||
<p><a class="btn btn-success" role="button" href="${request.route_url('rdv_edit', nodossier=nodossier, nolig='0')}">
|
<!-- PANEL SUIVI -->
|
||||||
<span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a></p>
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h4 class="panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#panel-suivi">
|
||||||
|
<span class="glyphicon glyphicon-arrow-down"></span> SUIVI</a>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div id="panel-suivi" class="panel-collapse collapse">
|
||||||
|
<div class="panel-body">
|
||||||
|
<p><a class="btn btn-success" role="button" href="${request.route_url('rdv_edit', nodossier=nodossier, nolig='0')}">
|
||||||
|
<span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a></p>
|
||||||
|
<table class="table table-bordered">
|
||||||
|
<tr>
|
||||||
|
<th>Date</th>
|
||||||
|
<th>Action</th>
|
||||||
|
<th>Rendez-vous</th>
|
||||||
|
<th class="text-center">Par</th>
|
||||||
|
</tr>
|
||||||
|
<tr tal:repeat="detail details">
|
||||||
|
<td>${detail.DATE.strftime('%d/%m/%Y')}</td>
|
||||||
|
<td>${detail.COMMENT} ${detail.COMMENTVI}</td>
|
||||||
|
<td>
|
||||||
|
<span tal:condition="detail.rdv_debut==None"></span>
|
||||||
|
<span tal:condition="detail.rdv_debut<>None">
|
||||||
|
<a href="${request.route_url('rdv_edit', nodossier=nodossier, nolig=detail.NOLIG)}">
|
||||||
|
${detail.rdv_debut.strftime('%d/%m/%Y %H:%M')}</a>
|
||||||
|
avec ${detail.LISTE}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td class="text-center">${detail.USERMAJ}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- PANEL SUIVI -->
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h4 class="panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#panel-documents">
|
||||||
|
<span class="glyphicon glyphicon-arrow-down"></span> DEVIS - FACTURES</a>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div id="panel-documents" class="panel-collapse collapse">
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table table-bordered">
|
||||||
|
<tr>
|
||||||
|
<th>Numéro</th>
|
||||||
|
<th>Date</th>
|
||||||
|
<th>Client</th>
|
||||||
|
<th class="text-right">Montant</th>
|
||||||
|
<th class="text-center">Statut</th>
|
||||||
|
</tr>
|
||||||
|
<tr tal:repeat="detail documents">
|
||||||
|
<td>${detail.TYPE}-${detail.numero}</td>
|
||||||
|
<td>${detail.date.strftime('%d-%m/-%Y')}</td>
|
||||||
|
<td>${detail.nomcli}</td>
|
||||||
|
<td class="text-right">${layout.to_euro(detail.montant)}</td>
|
||||||
|
<td class="text-center">${detail.status}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<table class="table table-bordered">
|
|
||||||
<tr>
|
|
||||||
<th>Date</th>
|
|
||||||
<th>Visite</th>
|
|
||||||
<th>Action</th>
|
|
||||||
<th class="text-center">Avec</th>
|
|
||||||
</tr>
|
|
||||||
<tr tal:repeat="detail details">
|
|
||||||
<td>${detail.DATE.strftime('%d/%m/%Y')}</td>
|
|
||||||
<td>
|
|
||||||
<span tal:condition="detail.rdv_debut==None"></span>
|
|
||||||
<span tal:condition="detail.rdv_debut<>None">
|
|
||||||
<a href="${request.route_url('rdv_edit', nodossier=nodossier, nolig=detail.NOLIG)}">
|
|
||||||
${detail.rdv_debut.strftime('%d/%m/%Y %H:%M')}</a>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
<td>${detail.COMMENT} ${detail.COMMENTVI}</td>
|
|
||||||
<td class="text-center">${detail.LISTE}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</metal:block>
|
</metal:block>
|
||||||
|
|||||||
95
mondumas/templates/chantier_lookup.pt
Normal file
95
mondumas/templates/chantier_lookup.pt
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
<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="site-search-form" class="form-horizontal" role="form" action="${url}" method="post"
|
||||||
|
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="control-label col-xs-4" for="societe">Societe</label>
|
||||||
|
<div class="col-xs-3">
|
||||||
|
<select class="form-control" id="societe" name="societe">
|
||||||
|
<div tal:repeat="item societes">
|
||||||
|
<option value="${item}" tal:attributes="selected societe==item and 'selected' or None">${item}</option>
|
||||||
|
</div>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-4 control-label">Nom ou numéro du chantier</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<input type="text" class="form-control" name="name" value="${name}"
|
||||||
|
data-fv-notempty="true"
|
||||||
|
data-fv-notempty-message="Le nom ou le numéro est obligatoire"
|
||||||
|
|
||||||
|
data-fv-stringlength="true"
|
||||||
|
data-fv-stringlength-min="2"
|
||||||
|
data-fv-stringlength-max="30"
|
||||||
|
data-fv-stringlength-message="Le nom ou le numéro doit avoir de 2 à 30 caractères de long" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- case a cocher "Afficher fiches cloturées" -->
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-xs-offset-4 col-xs-8">
|
||||||
|
<input type="checkbox" name="cb_tous" value="cb_tous"
|
||||||
|
tal:attributes="checked cb_tous == 'oui' and 'checked' or None">
|
||||||
|
Afficher les chantiers cloturées</input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-xs-offset-4 col-xs-8">
|
||||||
|
<button class="btn btn-primary" type="submit" name="form.submitted">
|
||||||
|
<span class="glyphicon glyphicon-search"></span> Rechercher</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div><!-- row -->
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div tal:condition="chantiers">
|
||||||
|
<table class="table table-bordered">
|
||||||
|
<tr>
|
||||||
|
<th>Numéro</th>
|
||||||
|
<th>Date</th>
|
||||||
|
<th>Client</th>
|
||||||
|
<th>Chantier</th>
|
||||||
|
<th class="text-right">Montant</th>
|
||||||
|
<th>Sinistre</th>
|
||||||
|
<th class="text-center">Statut</th>
|
||||||
|
</tr>
|
||||||
|
<tr tal:repeat="detail chantiers">
|
||||||
|
<td>
|
||||||
|
<a href="dossier_view/${societe}-${detail.numero}">${societe}-${detail.numero}<a>
|
||||||
|
</td>
|
||||||
|
<td>${detail.date.strftime('%d-%m/-%Y')}</td>
|
||||||
|
<td>${detail.nomcli}</td>
|
||||||
|
<td>${detail.chantier}</td>
|
||||||
|
<td class="text-right">${layout.to_euro(detail.montant)}</td>
|
||||||
|
<td>${detail.nosin}</td>
|
||||||
|
<td class="text-center">${detail.status}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#site-search-form').formValidation();
|
||||||
|
$('form input').on('keypress', function(e) {
|
||||||
|
return e.which !== 13;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</metal:block>
|
||||||
@@ -14,6 +14,11 @@
|
|||||||
<span class="glyphicon glyphicon-calendar logo-small"></span><br />
|
<span class="glyphicon glyphicon-calendar logo-small"></span><br />
|
||||||
<h4>PLANNING</h4></a>
|
<h4>PLANNING</h4></a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<a href="${request.application_url}/chantier_lookup">
|
||||||
|
<span class="glyphicon glyphicon-search logo-small"></span>
|
||||||
|
<h4>RECH. CHANTIER</h4></a>
|
||||||
|
</div>
|
||||||
</div> <!-- row 1 -->
|
</div> <!-- row 1 -->
|
||||||
<br />
|
<br />
|
||||||
<div class="row well" tal:condition="layout.isAdmin">
|
<div class="row well" tal:condition="layout.isAdmin">
|
||||||
|
|||||||
@@ -85,12 +85,14 @@ def dossier_view(request):
|
|||||||
return HTTPFound(location=request.route_url("agenda"))
|
return HTTPFound(location=request.route_url("agenda"))
|
||||||
# lire tous le suivi du dossier
|
# lire tous le suivi du dossier
|
||||||
details = get_dossier_rdv_by_no(request, nodossier, '0')
|
details = get_dossier_rdv_by_no(request, nodossier, '0')
|
||||||
|
# lire toutes les dossiers du chantiers
|
||||||
|
documents = get_documents_byChantier(request, nodossier)
|
||||||
return {
|
return {
|
||||||
'page_title': u"Dossier : %s" % (nodossier),
|
'page_title': u"Dossier : %s" % (nodossier),
|
||||||
'nodossier': nodossier,
|
'nodossier': nodossier,
|
||||||
'dossier': dossier,
|
'dossier': dossier,
|
||||||
'details': details,
|
'details': details,
|
||||||
|
'documents': documents,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -303,3 +303,39 @@ def user_edit(request):
|
|||||||
'access': access,
|
'access': access,
|
||||||
'message': message,
|
'message': message,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@view_config(route_name='chantier_lookup', renderer='../templates/chantier_lookup.pt', permission='view')
|
||||||
|
def chantier_lookup(request):
|
||||||
|
|
||||||
|
# recherche chantier
|
||||||
|
url = request.route_url('chantier_lookup')
|
||||||
|
|
||||||
|
message = u''
|
||||||
|
societes = ['PE','ME','PL','PO','CD']
|
||||||
|
societe = 'PE'
|
||||||
|
chantiers = []
|
||||||
|
name = u''
|
||||||
|
cb_tous = "non"
|
||||||
|
if 'form.submitted' in request.params:
|
||||||
|
name = request.params['name']
|
||||||
|
societe = request.params['societe']
|
||||||
|
# si afficher tous les fiches ?
|
||||||
|
if 'cb_tous' in request.params:
|
||||||
|
cb_tous = "oui"
|
||||||
|
chantiers = get_chantiers_byName(request, societe, name, True)
|
||||||
|
else:
|
||||||
|
cb_tous = "non"
|
||||||
|
chantiers = get_chantiers_byName(request, societe, name, False)
|
||||||
|
if len(chantiers) == 0:
|
||||||
|
message = u"Chantier non trouvé : %s" % name
|
||||||
|
|
||||||
|
return {
|
||||||
|
'page_title': u"Rechercher un chantier",
|
||||||
|
'url': url,
|
||||||
|
'message': message,
|
||||||
|
'chantiers': chantiers,
|
||||||
|
'societes': societes,
|
||||||
|
'societe': societe,
|
||||||
|
'name': name,
|
||||||
|
'cb_tous': cb_tous,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user