From 6ccf206c0c2e566d737f1f46e0e4770debf0860f Mon Sep 17 00:00:00 2001 From: thienan Date: Wed, 23 Jun 2021 15:46:49 +0200 Subject: [PATCH] ajout changement statut devis --- development.ini | 3 +- mondumas/models/devis.py | 464 +++++++++++---------- mondumas/models/dossier.py | 6 +- mondumas/templates/devis/devis_view.pt | 256 +++++++----- mondumas/templates/dossier/dossier_view.pt | 4 +- mondumas/views/devis.py | 23 + 6 files changed, 425 insertions(+), 331 deletions(-) diff --git a/development.ini b/development.ini index 3640f35..7bbc137 100644 --- a/development.ini +++ b/development.ini @@ -18,8 +18,9 @@ pyramid.includes = pyramid_mailer pyramid_tm - + 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 mondumas.admin_email = cao.thien-phuoc@orange.fr diff --git a/mondumas/models/devis.py b/mondumas/models/devis.py index ce8de54..24034f4 100644 --- a/mondumas/models/devis.py +++ b/mondumas/models/devis.py @@ -1,228 +1,236 @@ -# -*- coding: utf8 -*- -from sqlalchemy import text -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.orm import ( - scoped_session, - sessionmaker, -) -from zope.sqlalchemy import ( - ZopeTransactionExtension, - mark_changed -) - -from datetime import * -import transaction -import os - -from ..views.default import ( - to_int, -) - - -def execute_query(request, query, params): - """Execute query and mark session as changed""" - request.dbsession.execute(query, params) - mark_changed(request.dbsession) - transaction.commit() - -def get_devis_byName(request, societe, name): - numero = to_int(name) - - if numero > 0: - query = """SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol, nochantier, web - FROM devis WHERE societe=:societe AND no_id >=:name AND web = 'W' LIMIT 300;;""" % (societe, name) - elif len(name) == 0: - query = """SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol, nochantier, web - FROM devis WHERE societe=:societe AND web = 'W' ORDER BY no_id DESC LIMIT 300;""" - else: - query = """(SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol , nochantier, web - FROM devis WHERE societe=:societe AND c_nom LIKE ':name%' AND web = 'W' LIMIT 500)""" - results = request.dbsession.execute(query, {'societe': societe, 'name': name}).fetchall() - return results - -def get_devfac_by_no(request,nodossier): - # lire devis, facture ou proforma - - societe = nodossier[0:2] - type_doc = nodossier[3:5] - no_id = nodossier[5:] - - if type_doc == 'DE': - query = """ - SELECT d.*, c.*, 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 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 - WHERE d.societe = :societe and d.no_id=:no_id;""" - elif type_doc == 'FA': - query = """ - SELECT d.*, c.*, 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 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 - WHERE d.societe = :societe and d.no_id=:no_id;""" - else: - query = """ - SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d - 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_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp - WHERE d.societe = :societe and d.no_id=:no_id;""" - - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() - return results - -def get_devis_lig_by_no(request,nodossier): - - societe = nodossier[0:2] - type_doc = nodossier[3:5] - no_id = nodossier[5:] - - if type_doc == 'DE': - query = "SELECT * FROM devis_lig WHERE societe = :societe and no_id=:no_id;" - elif type_doc == 'FA': - query = "SELECT * FROM facture_lig WHERE societe = :societe and no_id=:no_id;" - else: - query = "SELECT * FROM proforma_lig WHERE societe = :societe and no_id=:no_id;" - - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall() - return results - -def get_devis_lignes_by_no(request, nodossier, nolig): - societe = nodossier[0:2] - type_doc = nodossier[3:5] - no_id = nodossier[5:] - - if nolig == '0': - query = "SELECT * FROM devis_lignes WHERE societe = :societe and no_id=:no_id;" - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall() - else: - query = "SELECT * FROM devis_lignes WHERE societe = :societe and no_id=:no_id and nolig=:nolig;" - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id, 'nolig': nolig}).first() - return results - - -def insert_devis_from_dossier(request, nodossier, logged_in): - societe = nodossier[0:2] - no_id = nodossier[3:] - - query = "CALL spINS_DEVIS_FROM_DOSSIER(:societe, 'DDW', :no_id, :logged_in);" - results = request.dbsession.execute(query,{'societe': societe, 'no_id': no_id, 'logged_in': logged_in}).first() - return results - -def get_devis_by_no(request,nodossier): - # lire devis, facture ou proforma - - societe = nodossier[0:2] - no_id = nodossier[5:] - - query = """ - SELECT d.*, c.*, 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 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 - WHERE d.societe = :societe and d.no_id=:no_id;""" - - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() - return results - -def get_facture_by_no(request,nodossier): - # lire facture - - societe = nodossier[0:2] - no_id = nodossier[5:] - - query = """ - SELECT d.*, c.*, 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 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 - WHERE d.societe = :societe and d.no_id=:no_id;""" - - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() - return results - -def get_proforma_by_no(request,nodossier): - # lire facture - - societe = nodossier[0:2] - no_id = nodossier[5:] - - query = """ - SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d - 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_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp - WHERE d.societe = :societe and d.no_id=:no_id;""" - - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() - return results - -def update_devis_ligne(request, nodossier, nolig, new_values): - societe = nodossier[0:2] - no_id = nodossier[5:] - # formater les champs - s = '' - for param in new_values.keys(): - if s: - s += ",%s=:%s" % (param, param) - else: - s = "%s=:%s" % (param, param) - - if nolig == '0': - query = "INSERT INTO devis_lignes SET %s" % s - else: - new_values['societe'] = societe - new_values['no_id'] = no_id - new_values['nolig'] = nolig - query = "UPDATE devis_lignes SET %s WHERE societe = :societe and no_id=:no_id and nolig = :nolig;" % s - # import pdb;pdb.set_trace() - execute_query(request, query, new_values) - -def sum_devis_totaux(request, nodossier): - societe = nodossier[0:2] - no_id = nodossier[5:] - - query = """UPDATE devis SET totalht = (SELECT SUM(mtht) FROM devis_lignes WHERE societe=:societe AND no_id=:no_id), - totaltva = ROUND(totalht * tauxtva / 100,2), - totalttc = totalht + totaltva - WHERE societe=:societe AND no_id=:no_id;""" - execute_query(request, query, {'societe': societe, 'no_id': no_id}) - -def delete_devis_ligne(request, nodossier, nolig): - societe = nodossier[0:2] - no_id = nodossier[5:] - - query = "DELETE FROM devis_lignes WHERE societe = :societe and no_id=:no_id and nolig=%s;" - execute_query(request, query, {'societe': societe, 'no_id': no_id}) - -def move_devis_ligne(request, nodossier, nolig, move): - societe = nodossier[0:2] - no_id = nodossier[5:] - - # get max no ligne du devis - query = "SELECT count(*) AS max_no FROM devis_lignes WHERE societe = :societe and no_id=:no_id;" - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() - max_no = results.max_no + 1 - - step = 0 - if move == 'up': - # déplacement vers le haut - if nolig > 1: - step = -1 - else: - # déplacement vers le haut - if nolig < max_no: - step = +1 - - if step != 0: - # déplacer le suivant ou précédent vers la fin - query = """UPDATE devis_lignes SET nolig = :max_no WHERE societe = :societe and no_id=:no_id and nolig = :nolig + :step;""" - execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'max_no': max_no, 'step': step}) - # permuter avec le suivant ou précédent - query = """UPDATE devis_lignes SET nolig = nolig + :step WHERE societe = :societe and no_id=:no_id and nolig = :nolig;""" - execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'step': step}) - # remettre le précédent ou suivant à la place de la ligne déplacée - 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}) - +# -*- coding: utf8 -*- +from sqlalchemy import text +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import ( + scoped_session, + sessionmaker, +) +from zope.sqlalchemy import ( + ZopeTransactionExtension, + mark_changed +) + +from datetime import * +import transaction +import os + +from ..views.default import ( + to_int, +) + + +def execute_query(request, query, params): + """Execute query and mark session as changed""" + request.dbsession.execute(query, params) + mark_changed(request.dbsession) + transaction.commit() + +def get_devis_byName(request, societe, name): + numero = to_int(name) + + if numero > 0: + query = """SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol, nochantier, web + FROM devis WHERE societe=:societe AND no_id >=:name AND web = 'W' LIMIT 300;;""" % (societe, name) + elif len(name) == 0: + query = """SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol, nochantier, web + FROM devis WHERE societe=:societe AND web = 'W' ORDER BY no_id DESC LIMIT 300;""" + else: + query = """(SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, nopol , nochantier, web + FROM devis WHERE societe=:societe AND c_nom LIKE ':name%' AND web = 'W' LIMIT 500)""" + results = request.dbsession.execute(query, {'societe': societe, 'name': name}).fetchall() + return results + +def get_devfac_by_no(request,nodossier): + # lire devis, facture ou proforma + + societe = nodossier[0:2] + type_doc = nodossier[3:5] + no_id = nodossier[5:] + + if type_doc == 'DE': + query = """ + SELECT d.*, c.*, 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 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 + WHERE d.societe = :societe and d.no_id=:no_id;""" + elif type_doc == 'FA': + query = """ + SELECT d.*, c.*, 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 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 + WHERE d.societe = :societe and d.no_id=:no_id;""" + else: + query = """ + SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d + 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_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp + WHERE d.societe = :societe and d.no_id=:no_id;""" + + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() + return results + +def get_devis_lig_by_no(request,nodossier): + + societe = nodossier[0:2] + type_doc = nodossier[3:5] + no_id = nodossier[5:] + + if type_doc == 'DE': + query = "SELECT * FROM devis_lig WHERE societe = :societe and no_id=:no_id;" + elif type_doc == 'FA': + query = "SELECT * FROM facture_lig WHERE societe = :societe and no_id=:no_id;" + else: + query = "SELECT * FROM proforma_lig WHERE societe = :societe and no_id=:no_id;" + + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall() + return results + +def get_devis_lignes_by_no(request, nodossier, nolig): + societe = nodossier[0:2] + type_doc = nodossier[3:5] + no_id = nodossier[5:] + + if nolig == '0': + query = "SELECT * FROM devis_lignes WHERE societe = :societe and no_id=:no_id;" + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall() + else: + query = "SELECT * FROM devis_lignes WHERE societe = :societe and no_id=:no_id and nolig=:nolig;" + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id, 'nolig': nolig}).first() + return results + + +def insert_devis_from_dossier(request, nodossier, logged_in): + societe = nodossier[0:2] + no_id = nodossier[3:] + + query = "CALL spINS_DEVIS_FROM_DOSSIER(:societe, 'DDW', :no_id, :logged_in);" + results = request.dbsession.execute(query,{'societe': societe, 'no_id': no_id, 'logged_in': logged_in}).first() + return results + +def get_devis_by_no(request,nodossier): + # lire devis, facture ou proforma + + societe = nodossier[0:2] + no_id = nodossier[5:] + + query = """ + 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 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_statuts s ON d.STATUS = s.code + WHERE d.societe = :societe and d.no_id=:no_id;""" + + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() + return results + +def get_facture_by_no(request,nodossier): + # lire facture + + societe = nodossier[0:2] + no_id = nodossier[5:] + + query = """ + 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 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_statuts s ON d.STATUS = s.code + WHERE d.societe = :societe and d.no_id=:no_id;""" + + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() + return results + +def get_proforma_by_no(request,nodossier): + # lire facture + + societe = nodossier[0:2] + no_id = nodossier[5:] + + query = """ + SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d + 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_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp + WHERE d.societe = :societe and d.no_id=:no_id;""" + + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() + return results + +def update_devis_ligne(request, nodossier, nolig, new_values): + societe = nodossier[0:2] + no_id = nodossier[5:] + # formater les champs + s = '' + for param in new_values.keys(): + if s: + s += ",%s=:%s" % (param, param) + else: + s = "%s=:%s" % (param, param) + + if nolig == '0': + query = "INSERT INTO devis_lignes SET %s" % s + else: + new_values['societe'] = societe + new_values['no_id'] = no_id + new_values['nolig'] = nolig + query = "UPDATE devis_lignes SET %s WHERE societe = :societe and no_id=:no_id and nolig = :nolig;" % s + # import pdb;pdb.set_trace() + execute_query(request, query, new_values) + +def sum_devis_totaux(request, nodossier): + societe = nodossier[0:2] + no_id = nodossier[5:] + + query = """UPDATE devis SET totalht = (SELECT SUM(mtht) FROM devis_lignes WHERE societe=:societe AND no_id=:no_id), + totaltva = ROUND(totalht * tauxtva / 100,2), + totalttc = totalht + totaltva + WHERE societe=:societe AND no_id=:no_id;""" + execute_query(request, query, {'societe': societe, 'no_id': no_id}) + +def delete_devis_ligne(request, nodossier, nolig): + societe = nodossier[0:2] + no_id = nodossier[5:] + + query = "DELETE FROM devis_lignes WHERE societe = :societe and no_id=:no_id and nolig=%s;" + execute_query(request, query, {'societe': societe, 'no_id': no_id}) + +def move_devis_ligne(request, nodossier, nolig, move): + societe = nodossier[0:2] + no_id = nodossier[5:] + + # get max no ligne du devis + query = "SELECT count(*) AS max_no FROM devis_lignes WHERE societe = :societe and no_id=:no_id;" + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first() + max_no = results.max_no + 1 + + step = 0 + if move == 'up': + # déplacement vers le haut + if nolig > 1: + step = -1 + else: + # déplacement vers le haut + if nolig < max_no: + step = +1 + + if step != 0: + # déplacer le suivant ou précédent vers la fin + query = """UPDATE devis_lignes SET nolig = :max_no WHERE societe = :societe and no_id=:no_id and nolig = :nolig + :step;""" + execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'max_no': max_no, 'step': step}) + # permuter avec le suivant ou précédent + query = """UPDATE devis_lignes SET nolig = nolig + :step WHERE societe = :societe and no_id=:no_id and nolig = :nolig;""" + execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'step': step}) + # remettre le précédent ou suivant à la place de la ligne déplacée + 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}) + +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}) \ No newline at end of file diff --git a/mondumas/models/dossier.py b/mondumas/models/dossier.py index 79f9153..9fb857d 100644 --- a/mondumas/models/dossier.py +++ b/mondumas/models/dossier.py @@ -30,13 +30,14 @@ def get_dossier_by_no(request,nodossier): societe = nodossier[0:2] no_id = nodossier[3:] 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.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 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_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); results = request.dbsession.execute(query).first() return results @@ -329,6 +330,9 @@ def get_status_by_id(request, code): if code == '': query = """SELECT * FROM p_statuts;""" results = request.dbsession.execute(query,).fetchall() + elif code == 'DE': + query = """SELECT * FROM p_statuts WHERE code >= 3;""" + results = request.dbsession.execute(query,).fetchall() else: query = """SELECT * FROM p_statuts WHERE code = :code;""" results = request.dbsession.execute(query, {'code': code}).first() diff --git a/mondumas/templates/devis/devis_view.pt b/mondumas/templates/devis/devis_view.pt index 23eab26..96fe14e 100644 --- a/mondumas/templates/devis/devis_view.pt +++ b/mondumas/templates/devis/devis_view.pt @@ -1,99 +1,157 @@ - -
-
- -
- -
- - - - - - - - - -

CHANTIER

${entete.societe}-${entete.nochantier}

-
-

${entete.C_QUALITE} ${entete.C_NOM}

- ${entete.C_ADR}
- ${entete.C_ADR2}
- ${entete.C_CP} ${entete.C_VILLE}
- ${entete.C_EMAIL} -
- Etage - Code
- Tél. domicile - prof.
- Tél. mobile - fax -
- ${entete.C_ETAGE} - ${entete.C_CODE}
- ${entete.C_TEL1} - ${entete.C_TEL2}
- ${entete.C_TELP} - ${entete.C_FAX} -
-
- - -
- - - - - - - - - -

CLIENT

-

${entete.QUALITE} ${entete.NOM}

- ${entete.ADRESSE}
- ${entete.ADRESSE2}
- ${entete.CP} ${entete.VILLE}
-
- Responsable
- Tél. 1 - 2
- Tél. mobile - fax -
- ${entete.NOMRESP}
- ${entete.TEL1} - ${entete.TEL2}
- ${entete.TELP} - ${entete.FAX} -
-
-

Statut : ${entete.STATUS}

-
- - - - - - - - - - - - - - -
Total HTTotal TVATotal TTCTVA
${layout.to_euro(entete.TOTALHT)}${layout.to_euro(entete.TOTALTVA)}${layout.to_euro(entete.TOTALTTC)}${entete.TAUXTVA} %
- - - - - - - - - - - - - - - - - - -
RéfDésignationQtéPU HTMontant HT
${detail.REF}${detail.LIB}${layout.to_euro(detail.QTE)}${layout.to_euroz(detail.PRIXHT)}${layout.to_euroz(detail.MTHT)}${detail.USERMAJ}
- -
-
+ +
+
+ +
+ +
+ + + + + + + + + +

CHANTIER

${entete.societe}-${entete.nochantier}

+
+

${entete.C_QUALITE} ${entete.C_NOM}

+ ${entete.C_ADR}
+ ${entete.C_ADR2}
+ ${entete.C_CP} ${entete.C_VILLE}
+ ${entete.C_EMAIL} +
+ Etage - Code
+ Tél. domicile - prof.
+ Tél. mobile - fax +
+ ${entete.C_ETAGE} - ${entete.C_CODE}
+ ${entete.C_TEL1} - ${entete.C_TEL2}
+ ${entete.C_TELP} - ${entete.C_FAX} +
+
+ + +
+ + + + + + + + + +

CLIENT

+

${entete.QUALITE} ${entete.NOM}

+ ${entete.ADRESSE}
+ ${entete.ADRESSE2}
+ ${entete.CP} ${entete.VILLE}
+
+ Responsable
+ Tél. 1 - 2
+ Tél. mobile - fax +
+ ${entete.NOMRESP}
+ ${entete.TEL1} - ${entete.TEL2}
+ ${entete.TELP} - ${entete.FAX} +
+
+
+

Statut : ${entete.libelle}

+
+

Dernière modif. le ${entete.DATEMAJ.strftime('%d/%m/%Y à %H:%M')} par ${entete.USERMAJ}

+

+ Modif. statut +

+
+ +
+
+ + + + + + + + + + + + + + +
Total HTTotal TVATotal TTCTVA
${layout.to_euro(entete.TOTALHT)}${layout.to_euro(entete.TOTALTVA)}${layout.to_euro(entete.TOTALTTC)}${entete.TAUXTVA} %
+ + + + + + + + + + + + + + + + + + +
RéfDésignationQtéPU HTMontant HT
${detail.REF}${detail.LIB}${layout.to_euro(detail.QTE)}${layout.to_euroz(detail.PRIXHT)}${layout.to_euroz(detail.MTHT)}${detail.USERMAJ}
+ + + + +
+
diff --git a/mondumas/templates/dossier/dossier_view.pt b/mondumas/templates/dossier/dossier_view.pt index 3f5aa92..071b5ea 100644 --- a/mondumas/templates/dossier/dossier_view.pt +++ b/mondumas/templates/dossier/dossier_view.pt @@ -97,11 +97,11 @@
-

Statut : ${dossier.STATUS}

+

Statut : ${dossier.libelle}

Dernière modif. le ${dossier.DATEMAJ.strftime('%d/%m/%Y à %H:%M')} par ${dossier.USERMAJ}

Clôturer dossier + data-toggle="modal" data-target="#confirmCloture"> Modif. statut dossier

diff --git a/mondumas/views/devis.py b/mondumas/views/devis.py index 6643b58..99be898 100644 --- a/mondumas/views/devis.py +++ b/mondumas/views/devis.py @@ -70,6 +70,7 @@ def devis_create(request): def devis_view(request): nodevis = request.matchdict['nodevis'] societe = nodevis[0:2] + logged_in = request.authenticated_userid.upper() url = request.route_url("devis_view", nodevis=nodevis) type_doc = nodevis[3:5] @@ -91,12 +92,34 @@ def devis_view(request): # select background color according to society 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 { 'page_title': page_title, + 'url': url, 'nodevis': nodevis, 'entete': entete, 'details': details, 'bg_color': bg_color, + 'status': status, + 'type_doc': type_doc, } @view_config(route_name='devis_web', renderer='../templates/devis/devis_web.pt', permission='view')