ajout dossier_view

This commit is contained in:
2017-03-24 13:39:35 +01:00
parent 6612b0b81b
commit 8ef2cc49f2
5 changed files with 279 additions and 124 deletions

View File

@@ -29,6 +29,50 @@ def get_agendas(request,code):
results = request.dbsession.execute(query, {'code': code}).first() results = request.dbsession.execute(query, {'code': code}).first()
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):
societe = nodossier[0:2]
table = get_table(nodossier[3:5])
no_id = nodossier[6:]
query = """
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM %s d
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
INNER JOIN p_cabinet a ON d.societe = a.societe and d.cabinet = a.code
INNER JOIN p_experts e ON d.societe = e.societe and d.cabinet = e.code_cab and d.expert = e.code_exp
where d.societe = '%s' and d.no_id=%s;""" % (table, societe, no_id);
results = request.dbsession.execute(query).first()
return results
def get_dossier_rdv_by_no(request,nodossier, nolig):
societe = nodossier[0:2]
table = get_table_details(nodossier[3:5])
no_id = nodossier[6:]
if nolig == '0':
query = "SELECT * FROM %s where societe = '%s' and no_id=%s;" % (table, societe, no_id)
results = request.dbsession.execute(query).fetchall()
else:
query = "SELECT * FROM %s where societe = '%s' and no_id=%s and nolig=%s;" % (table, societe, no_id, nolig)
results = request.dbsession.execute(query).first()
return results
def get_rendez_vous(request, itc): def get_rendez_vous(request, itc):
d = datetime.datetime.today() d = datetime.datetime.today()
d = d - dateutil.relativedelta.relativedelta(months=2) d = d - dateutil.relativedelta.relativedelta(months=2)

View File

@@ -3,7 +3,8 @@ def includeme(config):
config.add_route('home', '/') config.add_route('home', '/')
config.add_route('agenda', '/agenda') config.add_route('agenda', '/agenda')
config.add_route('changer_mdp', '/changer_mdp') config.add_route('changer_mdp', '/changer_mdp')
config.add_route('dossier_view', '/dossier_view/{mbr_id}') config.add_route('dossier_view', '/dossier_view/{nodossier}')
config.add_route('rdv_edit','/rdv_edit/{nodossier}/{nolig}')
config.add_route('envoyer_mdp', '/envoyer_mdp') config.add_route('envoyer_mdp', '/envoyer_mdp')
config.add_route('login', '/login') config.add_route('login', '/login')
config.add_route('logout', '/logout') config.add_route('logout', '/logout')

View File

@@ -1,78 +1,111 @@
<metal:block use-macro="main_template"> <metal:block use-macro="main_template">
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<br /> <br />
<table class="table"> <!-- ENTETE -->
<tr> <div class="row">
<td width="200">Số hồ sơ :<b> ${member.mbr_id}</b></td> <!-- CHANTIER -->
<td width="300"> <div class="col-md-6">
${member.civilite}&nbsp;<b>${member.nom}&nbsp;${member.prenom}</b><br /> <table class="table table-condensed ">
${member.adresse}<br /> <tr>
${member.adresse2}<br /> <td><h4>CHANTIER</h4></td>
${member.cp}&nbsp;${member.ville}<br /> <td>
</td> <h4>${dossier.C_QUALITE} ${dossier.C_NOM}</h4>
<td valign="bottom"> ${dossier.C_ADR}<br />
<a class="btn btn-primary" role="button" <span tal:condition="dossier.C_ADR2">${dossier.C_ADR2}<br /></span>
href="${request.route_url('member_edit', mbr_id=member.mbr_id)}"> ${dossier.C_CP} ${dossier.C_VILLE}<br />
<span class="glyphicon glyphicon-pencil"></span> Modifier</a> </td>
<a class="btn btn-default" role="button" </tr>
href="${request.route_url('members', mbr_id=member.mbr_id)}"> <tr>
<span class="glyphicon glyphicon-chevron-left"></span> Danh sách</a> <td>
</td> Etage - Code<br />
</tr> Tél. domicile - prof.<br />
<tr> Tél. mobile - fax
<td> </td>
Điện thoại (mobile - nhà)<br /> <td>
Email<br /> ${dossier.C_ETAGE} - ${dossier.C_CODE}<br />
Pháp danh<br /> ${dossier.C_TEL1} - ${dossier.C_TEL2}<br />
Ghi Chú<br /> ${dossier.C_TELP} - ${dossier.C_FAX}
</td> </td>
<td> </tr>
${member.tel_mobile} - ${member.tel_fixe}<br /> <tr>
${member.email}<br /> <td>
${member.phap_danh}<br /> Cabinet<br />
${member.notes}<br /> Expert<br />
</td> Référence expert
<td></td> </td>
</tr> <td>
<tr> ${dossier.nom_cabinet}<br />
<td> ${dossier.nom_expert}<br />
Trang thái<br /> ${dossier.REF_EXPERT}<br />
Niên liễm<br /> </td>
Ngày thay đổi<br /> </tr>
</td> <tr>
<td> <td>
${member.statut}<br /> Police<br />
${member.cotise_en}<br /> Sinistre<br />
${member.modif_le.strftime('%d-%m-%Y %H:%M')} - [<i>Ngày tạo : ${member.cree_le.strftime('%d-%m-%Y')}</i>] Votre référence<br />
</td> </td>
<td></td> <td>
</tr> ${dossier.NOPOL}<br />
</table> ${dossier.NOSIN}<br />
${dossier.VREF}<br />
</td>
</tr>
</table>
</div>
<h3>Cúng dường </h3> <!-- Mon compte -->
<p><a class="btn btn-success" role="button" href="${request.route_url('gift_edit', mbr_id=member.mbr_id, don_id='0')}"> <div class="col-md-6 well">
<span class="glyphicon glyphicon-plus"></span> Thêm cúng dường</a></p> <table class="table table-condensed ">
<tr>
<td><h4>CLIENT</h4></td>
<td>
<h4>${dossier.QUALITE} ${dossier.NOM}</h4>
${dossier.ADRESSE}<br />
<span tal:condition="dossier.ADRESSE2">${dossier.ADRESSE2}<br /></span>
${dossier.CP} ${dossier.VILLE}<br />
</td>
</tr>
<tr>
<td>
Responsable<br />
Tél. 1 - 2<br />
Tél. mobile - fax
</td>
<td>
${dossier.NOMRESP}<br />
${dossier.TEL1} - ${dossier.TEL2}<br />
${dossier.TELP} - ${dossier.FAX}
</td>
</tr>
</table>
</div>
</div> <!-- row -->
<h3>SUIVI</h3>
<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>
<div class="col-sm-7">
<table class="table table-bordered"> <table class="table table-bordered">
<tr> <tr>
<th>Ngày thu</th> <th>Date</th>
<th>Loại</th> <th>Visite</th>
<th class="text-right">Số tin</th> <th>Action</th>
<th class="text-center">Bằng</th> <th class="text-center">Avec</th>
<th>Vào QUỸ</th>
</tr> </tr>
<tr tal:repeat="don dons"> <tr tal:repeat="detail details">
<td tal:content="don.date.strftime('%d/%m/%Y')">&nbsp;</td> <td>${detail.DATE.strftime('%d/%m/%Y')}</td>
<td tal:content="don.type"></td> <td>
<td class="text-right" tal:content="layout.to_euro(don.montant)"></td> <span tal:condition="detail.DATEVI==None"></span>
<td class="text-center"> <span tal:condition="detail.DATEVI<>None">
<a href="${request.route_url('gift_edit', mbr_id=don.mbr_id, don_id=don.don_id)}">${don.mode}</a> <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>
<td>${don.valide_le}</td> <td>${detail.COMMENT} ${detail.COMMENTVI}</td>
<td class="text-center">${detail.LISTE}</td>
</tr> </tr>
</table> </table>
</div>
</div> </div>
</metal:block> </metal:block>

View File

@@ -0,0 +1,91 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
<br />
<div class="row">
<form id="empl_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="rdv"
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-2 control-label" for="date_vi">Date</label>
<div class="col-xs-3 date">
<input class="form-control" type="text" name="date_vi"
value="${rdv.DATEVI.strftime('%d-%m-%Y')}"
data-fv-notempty="true"
data-fv-notempty-message="La date est obligatoire"
data-fv-date="true"
data-fv-date-format="DD-MM-YYYY"
data-fv-date-message="La date n'est pas valide" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="heurevi">Heure</label>
<div class="col-xs-3">
<input class="form-control" type="text" name="heurevi"
value="${rdv.HEUREVI.strftime('%H:%M')}"
data-fv-notempty="true"
data-fv-notempty-message="L'heure est obligatoire"
data-fv-date="true"
data-fv-date-format="h:m"
data-fv-date-message="L'heure n'est pas valide" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="comment">Commentaire 1</label>
<div class="col-xs-5">
<input class="form-control" type="text" id="comment" name="comment" value="${rdv.COMMENT}"
placeholder="30 caractères maximum"
data-fv-notempty="true"
data-fv-notempty-message="Un commentaire est obligatoire"
data-fv-stringlength="true"
data-fv-stringlength-max="30"
data-fv-stringlength-message="30 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="commentvi">Commentaire 2</label>
<div class="col-xs-5">
<input class="form-control" type="text" id="commentvi" name="commentvi" value="${rdv.COMMENTVI}"
placeholder="30 caractères maximum"
data-fv-stringlength="true"
data-fv-stringlength-max="30"
data-fv-stringlength-message="30 caractères maximum" />
</div>
</div>
<div class="form-group">
<div class="col-xs-offset-2 col-xs-10">
<div class="form-group">
<a class="btn btn-default" href="${request.route_url('dossier_view', nodossier=nodossier)}">
<span class="glyphicon glyphicon-arrow-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"
tal:condition="python: rdv.NOLIG <> '0'">
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
</div>
</div>
</div>
</form>
<br />
<br />
<br />
</div> <!-- row -->
<script>
$(document).ready(function() {
$('#empl_edit-form').formValidation();
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
});
</script>
</div>
</metal:block>

View File

@@ -15,7 +15,7 @@ from pyramid.httpexceptions import (
HTTPNotFound, HTTPNotFound,
HTTPForbidden, HTTPForbidden,
) )
from pyramid_mailer import get_mailer
from pyramid_mailer.message import Message, Attachment from pyramid_mailer.message import Message, Attachment
from datetime import * from datetime import *
import hashlib import hashlib
@@ -29,85 +29,71 @@ from ..models.agenda import *
from ..models.default import * from ..models.default import *
@view_config(route_name='member_edit', renderer='../templates/agenda/member_edit.pt', permission='view') @view_config(route_name='rdv_edit', renderer='../templates/agenda/rdv_edit.pt', permission='view')
def member_edit(request): def rdv_edit(request):
mbr_id = request.matchdict['mbr_id'] nodossier = request.matchdict['nodossier']
url = request.route_url("member_edit", mbr_id=mbr_id) nolig = request.matchdict['nolig']
url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig)
message = '' message = ''
civilites = ["M.","M.Mme","Mme"] if nolig == '0':
etats = [u"Actif",u"Décédé",u"NPAI"]
if mbr_id == '0':
# nouveau # nouveau
membre = {} rdv = {}
membre['mbr_id'] = 0 rdv['NOLIG'] = 0
membre['civilite'] = 'Mme' rdv['COMMENT'] = ''
membre['nom'] = '' rdv['COMMENTVI'] = ''
membre['prenom'] = '' rdv['DATEVI'] = date.today()
membre['adresse'] = '' rdv['HEUREVI'] = '09:00'
membre['adresse2'] = '' page_title= 'Nouveau rendez-vous'
membre['cp'] = ''
membre['ville'] = ''
membre['email'] = ''
membre['tel_fixe'] = ''
membre['tel_mobile'] = ''
membre['phap_danh'] = '0'
membre['notes'] = ''
membre['etat'] = 'Actif'
membre['statut'] = 'HV'
page_title= 'Nouvelle Fiche'
else: else:
# lire la fiche de l'membre # lire le rendez-vous
membre = get_member_by_id(request, mbr_id) rdv = get_dossier_rdv_by_no(request, nodossier, nolig)
if not membre: if not rdv:
request.session.flash(u"Membre non trouvé : %s" % id, 'warning') request.session.flash(u"Rendez-vous non trouvé : %s" % nodossier, 'warning')
return HTTPFound(location=request.route_url('members')) return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
page_title= u"Modification de la fiche no %s" %(membre.mbr_id) page_title= u"Modification du rendez-vous du %s" % (rdv.rdv_debut.strftime('%Y-%m-%d %H:%M'))
if 'form.submitted' in request.params: if 'form.submitted' in request.params:
new_values = {} new_values = {}
for param, db_value in membre.items(): for param, db_value in rdv.items():
if param in request.params and request.params[param] != db_value: if param in request.params and request.params[param] != db_value:
new_values[param] = request.params[param] new_values[param] = request.params[param]
if new_values: if new_values:
update_membre(request, mbr_id, new_values) update_rdv(request, nodossier, nolig, new_values)
request.session.flash(u"La fiche a été mise à jour avec succès.", 'success') request.session.flash(u"Le rendez-vous a été mis à jour avec succès.", 'success')
if mbr_id == '0': return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
return HTTPFound(location=request.route_url('members'))
else:
return HTTPFound(location=request.route_url('member_view', mbr_id=mbr_id))
if 'form.deleted' in request.params: if 'form.deleted' in request.params:
delete_membre(request, mbr_id) delete_rdv(request, nodossier, nolig)
request.session.flash(u"La fiche a été supprimée avec succès.", 'success') request.session.flash(u"Le rendez-vous a été supprimé avec succès.", 'success')
return HTTPFound(location=request.route_url('members')) return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
return { return {
'page_title': page_title, 'page_title': page_title,
'url': url, 'url': url,
'membre': membre, 'nodossier': nodossier,
'etats': etats, 'rdv': rdv,
'civilites': civilites,
'message': message, 'message': message,
} }
@view_config(route_name='member_view', renderer='../templates/agenda/member_view.pt', permission='view') @view_config(route_name='dossier_view', renderer='../templates/agenda/dossier_view.pt', permission='view')
def member_view(request): def dossier_view(request):
mbr_id = request.matchdict['mbr_id'] nodossier = request.matchdict['nodossier']
url = request.route_url("member_view", mbr_id=mbr_id) url = request.route_url("dossier_view", nodossier=nodossier)
member = get_member_by_id(request, mbr_id) dossier = get_dossier_by_no(request, nodossier)
if member is None: if dossier is None:
request.session.flash(u"La fiche no %s est introuvable" % (mbr_id), 'danger') request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger')
return HTTPFound(location=request.route_url("members")) return HTTPFound(location=request.route_url("agenda"))
# lire tous les dons du membre # lire tous le suivi du dossier
dons = get_dons_by_mbr(request, mbr_id, 0) details = get_dossier_rdv_by_no(request, nodossier, '0')
return { return {
'page_title': u"[#%s] : %s %s" % (mbr_id, member.nom, member.prenom), 'page_title': u"Dossier : %s" % (nodossier),
'member': member, 'nodossier': nodossier,
'dons': dons, 'dossier': dossier,
'details': details,
} }
@view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt') @view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt')
@@ -134,7 +120,7 @@ def agenda(request):
# construire la liste des events # construire la liste des events
events = [] events = []
for row in rows: for row in rows:
event_url = 'agenda_event/%s' % (row.nodossier) event_url = 'dossier_view/%s' % (row.nodossier)
event_title = row.c_nom event_title = row.c_nom
# déterminer la couleur de l'event selon la societe # déterminer la couleur de l'event selon la societe