ajout changement statut devis

This commit is contained in:
thienan
2021-06-23 15:46:49 +02:00
parent 3cb7664a08
commit 6ccf206c0c
6 changed files with 425 additions and 331 deletions

View File

@@ -20,6 +20,7 @@ pyramid.includes =
sqlalchemy.url = mysql://phuoc:phuoc!@localhost/bddevfac?charset=utf8 sqlalchemy.url = mysql://phuoc:phuoc!@localhost/bddevfac?charset=utf8
#sqlalchemy.url = mysql://phuoc:phuoc!@192.168.1.17/bddevfac?charset=utf8
# sqlalchemy.url = mysql://phuoc:phuoc!@192.168.0.31/bddevfac?charset=utf8 # sqlalchemy.url = mysql://phuoc:phuoc!@192.168.0.31/bddevfac?charset=utf8
mondumas.admin_email = cao.thien-phuoc@orange.fr mondumas.admin_email = cao.thien-phuoc@orange.fr

View File

@@ -117,10 +117,11 @@ def get_devis_by_no(request,nodossier):
no_id = nodossier[5:] no_id = nodossier[5:]
query = """ query = """
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM devis d SELECT d.*, c.*, s.libelle, a.NOM as nom_cabinet, e.NOM as nom_expert FROM 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
INNER JOIN p_statuts s ON d.STATUS = s.code
WHERE d.societe = :societe and d.no_id=:no_id;""" WHERE d.societe = :societe and d.no_id=:no_id;"""
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
@@ -133,10 +134,11 @@ def get_facture_by_no(request,nodossier):
no_id = nodossier[5:] no_id = nodossier[5:]
query = """ query = """
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM facture d SELECT d.*, c.*, s.libelle, a.NOM as nom_cabinet, e.NOM as nom_expert FROM facture 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
INNER JOIN p_statuts s ON d.STATUS = s.code
WHERE d.societe = :societe and d.no_id=:no_id;""" WHERE d.societe = :societe and d.no_id=:no_id;"""
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
@@ -226,3 +228,9 @@ def move_devis_ligne(request, nodossier, nolig, move):
query = """UPDATE devis_lignes SET nolig = :nolig WHERE societe = :societe and no_id=:no_id and nolig = :max_no;""" query = """UPDATE devis_lignes SET nolig = :nolig WHERE societe = :societe and no_id=:no_id and nolig = :max_no;"""
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'max_no': max_no}) execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'max_no': max_no})
def update_devis_cloture(request, nodevis, status, logged_in):
societe = nodevis[0:2]
nochantier = int(nodevis[5:])
# met le montant regle à 1 centime pour terminé le dossier
query = "UPDATE devis SET STATUS = :status, USERMAJ = :logged_in WHERE societe=:societe AND no_id=:nochantier;"
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'status': status, 'logged_in': logged_in})

View File

@@ -30,13 +30,14 @@ def get_dossier_by_no(request,nodossier):
societe = nodossier[0:2] societe = nodossier[0:2]
no_id = nodossier[3:] no_id = nodossier[3:]
query = """ query = """
SELECT d.*, a.NOM as nom_cabinet, e.NOM as nom_expert, SELECT d.*, s.libelle, a.NOM as nom_cabinet, e.NOM as nom_expert,
c.QUALITE AS cli_QUALITE, c.NOM AS cli_NOM, c.ADRESSE AS cli_ADRESSE, c.ADRESSE2 AS cli_ADRESSE2, c.CP AS cli_CP, c.VILLE AS cli_VILLE, c.QUALITE AS cli_QUALITE, c.NOM AS cli_NOM, c.ADRESSE AS cli_ADRESSE, c.ADRESSE2 AS cli_ADRESSE2, c.CP AS cli_CP, c.VILLE AS cli_VILLE,
c.TEL1 AS cli_TEL1, c.TEL2 AS cli_TEL2, c.TELP AS cli_TELP, c.FAX AS cli_FAX, c.NOMRESP AS cli_NOMRESP c.TEL1 AS cli_TEL1, c.TEL2 AS cli_TEL2, c.TELP AS cli_TELP, c.FAX AS cli_FAX, c.NOMRESP AS cli_NOMRESP
FROM dem_devis d 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
INNER JOIN p_statuts s ON d.STATUS = s.code
where d.societe = '%s' and d.no_id=%s;""" % (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
@@ -329,6 +330,9 @@ def get_status_by_id(request, code):
if code == '': if code == '':
query = """SELECT * FROM p_statuts;""" query = """SELECT * FROM p_statuts;"""
results = request.dbsession.execute(query,).fetchall() results = request.dbsession.execute(query,).fetchall()
elif code == 'DE':
query = """SELECT * FROM p_statuts WHERE code >= 3;"""
results = request.dbsession.execute(query,).fetchall()
else: else:
query = """SELECT * FROM p_statuts WHERE code = :code;""" query = """SELECT * FROM p_statuts WHERE code = :code;"""
results = request.dbsession.execute(query, {'code': code}).first() results = request.dbsession.execute(query, {'code': code}).first()

View File

@@ -58,7 +58,17 @@
</tr> </tr>
</table> </table>
</div> </div>
<h4>Statut : ${entete.STATUS}</h4> <div class="col-md-6">
<h4>Statut : ${entete.libelle}</h4>
<div tal:condition="type_doc=='DE'">
<p>Dernière modif. le <b>${entete.DATEMAJ.strftime('%d/%m/%Y à %H:%M')}</b> par <b>${entete.USERMAJ}</b></p>
<p>
<a class="btn btn-warning" role="button" href="#"
data-toggle="modal" data-target="#confirmCloture"><span class="glyphicon glyphicon-check"></span> Modif. statut</a>
</p>
</div>
</div>
</div> <!-- row --> </div> <!-- row -->
<!-- ENTETE entete --> <!-- ENTETE entete -->
<table class="table table-bordered table-condensed"> <table class="table table-bordered table-condensed">
@@ -95,5 +105,53 @@
</tr> </tr>
</table> </table>
<!-- Modal : Confirmation CLOTURE -->
<div class="modal fade" id="confirmCloture" role="dialog" aria-labelledby="confirmClotureLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Clôturer le devis</h4>
</div>
<div class="modal-body">
<!-- The form is placed inside the body of modal -->
<form id="add_justif-form" class="form-horizontal" action="${url}" method="post">
<div class="form-group">
<p class="text-center"><b>Voulez-vous changer le status du devis ?</b></p>
</div>
<div class="row">
<label class="control-label col-xs-4" for="status">Sélectionner le statut :</label>
<div class="col-xs-8">
<select class="form-control" id="status" name="status">
<div tal:repeat="item status">
<option tal:attributes="selected entete.STATUS==item.code and 'selected' or None">${item.code} | ${item.libelle}</option>
</div>
</select>
</div>
</div>
<br>
<div class="row">
<label class="control-label col-xs-4" for="motif">Motif :</label>
<div class="col-xs-8">
<input class="form-control" type="text" id="motif" name="motif" value=""
placeholder="65 caractères maximum"
data-fv-notempty="true"
data-fv-notempty-message="Veuillez remplir un motif"
data-fv-stringlength="true"
data-fv-stringlength-max="65"
data-fv-stringlength-message="65 caractères maximum"/>
</div>
</div>
<br>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
<button type="submit" class="btn btn-warning" name="form.close">Clôturer</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div> </div>
</metal:block> </metal:block>

View File

@@ -97,11 +97,11 @@
</table> </table>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<h4>Statut : ${dossier.STATUS}</h4> <h4>Statut : ${dossier.libelle}</h4>
<p>Dernière modif. le <b>${dossier.DATEMAJ.strftime('%d/%m/%Y à %H:%M')}</b> par <b>${dossier.USERMAJ}</b></p> <p>Dernière modif. le <b>${dossier.DATEMAJ.strftime('%d/%m/%Y à %H:%M')}</b> par <b>${dossier.USERMAJ}</b></p>
<p> <p>
<a class="btn btn-warning" role="button" href="#" <a class="btn btn-warning" role="button" href="#"
data-toggle="modal" data-target="#confirmCloture"><span class="glyphicon glyphicon-check"></span> Clôturer dossier</a> data-toggle="modal" data-target="#confirmCloture"><span class="glyphicon glyphicon-check"></span> Modif. statut dossier</a>
</p> </p>
</div> </div>

View File

@@ -70,6 +70,7 @@ def devis_create(request):
def devis_view(request): def devis_view(request):
nodevis = request.matchdict['nodevis'] nodevis = request.matchdict['nodevis']
societe = nodevis[0:2] societe = nodevis[0:2]
logged_in = request.authenticated_userid.upper()
url = request.route_url("devis_view", nodevis=nodevis) url = request.route_url("devis_view", nodevis=nodevis)
type_doc = nodevis[3:5] type_doc = nodevis[3:5]
@@ -91,12 +92,34 @@ def devis_view(request):
# select background color according to society # select background color according to society
bg_color = "bg-%s" % societe bg_color = "bg-%s" % societe
status = get_status_by_id(request, 'DE')
if 'form.close' in request.params:
status = request.params["status"]
motif = request.params["motif"]
code, libelle = status.split(' | ')
code = int(code)
nodossier = str(entete.societe) + '-' + str(entete.nochantier)
if type_doc == 'DE':
if code >= 10:
comment = 'Le devis est ' + libelle + ' : ' + motif
insert_suivi(request, nodossier, comment)
update_devis_cloture(request, nodevis, code, logged_in)
request.session.flash(u"Le statut du devis a été changé avec succès.", 'success')
return HTTPFound(url)
return { return {
'page_title': page_title, 'page_title': page_title,
'url': url,
'nodevis': nodevis, 'nodevis': nodevis,
'entete': entete, 'entete': entete,
'details': details, 'details': details,
'bg_color': bg_color, 'bg_color': bg_color,
'status': status,
'type_doc': type_doc,
} }
@view_config(route_name='devis_web', renderer='../templates/devis/devis_web.pt', permission='view') @view_config(route_name='devis_web', renderer='../templates/devis/devis_web.pt', permission='view')