From df8753b1b756ab52a3c4670638eadf3334786793 Mon Sep 17 00:00:00 2001 From: thienan Date: Wed, 23 Jun 2021 10:43:43 +0200 Subject: [PATCH] ajout bouton changement de statut pour dossier --- development.ini | 77 --- mondumas/models/dossier.py | 657 +++++++++++---------- mondumas/templates/dossier/dossier_view.pt | 34 +- mondumas/views/dossier.py | 19 +- 4 files changed, 368 insertions(+), 419 deletions(-) delete mode 100644 development.ini diff --git a/development.ini b/development.ini deleted file mode 100644 index f52aca5..0000000 --- a/development.ini +++ /dev/null @@ -1,77 +0,0 @@ -### -# app configuration -# http://docs.pylonsproject.org/projects/pyramid/en/1.7-branch/narr/environment.html -### - -[app:main] -use = egg:mondumas - -pyramid.reload_templates = true -pyramid.debug_authorization = false -pyramid.debug_notfound = false -pyramid.debug_routematch = false -pyramid.default_locale_name = en -pyramid.includes = - pyramid_chameleon - pyramid_debugtoolbar - pyramid_layout - pyramid_mailer - pyramid_tm - - -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 -mondumas.devfac_url = mondumas:static/DEVFAC/DOCS_ATTACHES/ -mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES - -# Mailer configuration -mail.host = smtp.orange.fr -mail.port = 25 -mail.username = cao.thien-phuoc@orange.fr - -[server:main] -use = egg:waitress#main -host = 0.0.0.0 -port = 9180 - -### -# logging configuration -# http://docs.pylonsproject.org/projects/pyramid/en/1.7-branch/narr/logging.html -### - -[loggers] -keys = root, mondumas, sqlalchemy - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = INFO -handlers = console - -[logger_mondumas] -level = DEBUG -handlers = -qualname = mondumas - -[logger_sqlalchemy] -level = INFO -handlers = -qualname = sqlalchemy.engine -# "level = INFO" logs SQL queries. -# "level = DEBUG" logs SQL queries and results. -# "level = WARN" logs neither. (Recommended for production systems.) - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s diff --git a/mondumas/models/dossier.py b/mondumas/models/dossier.py index ff4fbfc..a640e60 100644 --- a/mondumas/models/dossier.py +++ b/mondumas/models/dossier.py @@ -1,326 +1,331 @@ -# -*- 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 - -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_chantiers_byName(request, societe, name): - - query = "CALL spGET_CHANTIERS_byName('%s','%s');" % (societe, name) - results = request.dbsession.execute(query).fetchall() - return results - -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, -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 -where d.societe = '%s' and d.no_id=%s;""" % (societe, no_id); - results = request.dbsession.execute(query).first() - return results - -def get_dossier_by_sinistre(request,societe, nosin): - query = "SELECT * FROM dem_devis WHERE societe = '%s' and LEFT(REPLACE(nosin,' ', ''),11) = LEFT(REPLACE('%s',' ', ''),11);" % (societe, nosin); - results = request.dbsession.execute(query).first() - return results - -def get_dossiers_traites(request): - query = "SELECT * FROM dem_devis WHERE usermaj='EMAIL' ORDER BY DATEMAJ"; - results = request.dbsession.execute(query).fetchall() - return results - -def get_clients_byName(request, societe, nom): - query = "SELECT * FROM clients WHERE societe = '%s' and nom LIKE '%s';" % (societe, nom + '%'); - results = request.dbsession.execute(query).fetchall() - return results - - - -def get_dossier_rdv_by_no(request,nodossier, nolig): - societe = nodossier[0:2] - no_id = nodossier[3:] - - if nolig == '0': - query = "SELECT * FROM dem_lig WHERE societe = :societe AND no_id = :no_id;" - results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall() - else: - query = """ -SELECT l.*, d.C_QUALITE, d.C_NOM FROM dem_lig l INNER JOIN dem_devis d ON l.societe = d.societe and l.no_id = d.no_id -where l.societe = '%s' and l.no_id=%s and l.nolig=%s;""" % (societe, no_id, nolig) - 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 - -def update_suivi(request, nodossier, nolig, new_values): - societe = nodossier[0:2] - no_id = nodossier[3:] - - new_values['societe'] = societe - new_values['no_id'] = no_id - 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 dem_lig SET %s" % s - else: - 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 insert_suivi(request, nodossier, comment): - societe = nodossier[0:2] - no_id = nodossier[3:] - - query = "INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, USERMAJ) VALUES (:societe, :no_id, CURRENT_DATE(), :comment, 'EMAIL');" - execute_query(request, query, {'societe': societe, 'no_id': no_id, 'comment': comment}) - - query = "UPDATE dem_devis SET usermaj = 'EMAIL' WHERE SOCIETE=:societe AND NO_ID=:no_id;" - execute_query(request, query, {'societe': societe, 'no_id': no_id}) - -def get_similaires_byChantier(request, societe, C_NOM, C_ADR, C_CP, C_VILLE): - - query = """ -SELECT CONCAT(societe,'-',NO_ID) AS nodossier, dem_devis.* FROM dem_devis -WHERE societe<>:societe AND C_NOM=:C_NOM AND C_ADR=:C_ADR AND C_CP=:C_CP AND C_VILLE=:C_VILLE;""" - results = request.dbsession.execute(query, {'societe': societe, 'C_NOM': C_NOM, 'C_ADR': C_ADR, 'C_CP': C_CP, 'C_VILLE': C_VILLE}).fetchall() - - return results - -def get_docs_attaches(request, nodossier, norapport, origine, filename): - societe = nodossier[0:2] - nochantier = int(nodossier[3:]) - - if filename == '': - query = "SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier AND nodossier=0 AND origine = :origine ORDER BY cree_le;" - else: - query = """SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier - AND nodossier = :norapport AND origine = :origine AND nomfichier = :filename ORDER BY cree_le;""" - results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, - 'norapport': norapport, 'origine': origine, 'filename': filename}).fetchall() - return results - -def get_photos(request, nodossier, norapport, origine): - societe = nodossier[0:2] - nochantier = int(nodossier[3:]) - query = """SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier - AND nodossier = :norapport AND origine = :origine AND UPPER(RIGHT(nomfichier,3)) <> 'PDF' ORDER BY cree_le;""" - results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'origine': origine}).fetchall() - return results - -def delete_photos(request, nodossier, norapport, origine, nomfic): - societe = nodossier[0:2] - nochantier = int(nodossier[3:]) - # supprimer d'abord le fichier - if len(origine) > 1: - file_path = '%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, nomfic) - else: - file_path = '%s/%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport, nomfic) - if os.path.exists(file_path): - os.remove(file_path) - - query = "DELETE FROM dossier_attaches WHERE societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND origine=:origine AND nomfichier=:nomfic;" - execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'origine': origine, 'nomfic': nomfic}) - -def rename_photos(request, nodossier, norapport, origine, nomfic, new_nomfic): - societe = nodossier[0:2] - nochantier = int(nodossier[3:]) - - query = """ - UPDATE dossier_attaches SET nomfichier = :new_nomfic - WHERE societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND origine=:origine AND nomfichier=:nomfic; - """ - execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, - 'origine': origine, 'nomfic': nomfic, 'new_nomfic': new_nomfic}) - -def update_dossier(request, nodossier, new_values): - societe = nodossier[0:2] - nochantier = int(nodossier[3:]) - - s = '' - for param in new_values.keys(): - if param == 'C_VILLE': - new_values['C_VILLE'] = new_values['C_VILLE'].upper() - - if s: - s += ",%s=:%s" % (param, param) - else: - s = "%s=:%s" % (param, param) - new_values['societe'] = societe - new_values['nochantier'] = nochantier - query = "UPDATE dem_devis SET %s WHERE societe=:societe AND no_id=:nochantier" % s - execute_query(request, query, new_values) - - query = "CALL spUPD_CHANTIER_COORD(:societe, :nochantier);" - execute_query(request, query, {'societe': societe, 'nochantier': nochantier}) - -def update_dossier_cloture(request, nodossier, logged_in): - societe = nodossier[0:2] - nochantier = int(nodossier[3:]) - # met le montant regle à 1 centime pour terminé le dossier - query = "UPDATE dem_devis SET STATUS = 'Annulée', USERMAJ = :logged_in WHERE societe=:societe AND no_id=:nochantier" - execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'logged_in': logged_in}) - -def insert_dossier_attaches(request, nodossier, norapport, origine, filename, filesize, user): - societe = nodossier[0:2] - nochantier = int(nodossier[3:]) - - # fichier existe ? - item = get_docs_attaches(request, nodossier, norapport, origine, filename) - if item: - return - # enregistrer dans la table dossier_attaches - query = """INSERT INTO dossier_attaches (societe, nochantier, nodossier, origine, nomfichier, taillefichier, cree_le, usermaj) - VALUES(:societe,:nochantier,:norapport,:origine,:filename,:filesize,NOW(),:user);""" - execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, - 'origine': origine, 'filename': filename, 'filesize': filesize, 'user': user}) - -def get_rapport_by_no(request,nodossier,date_inter): - societe = nodossier[0:2] - nochantier = nodossier[3:] - if date_inter == '': - query = "SELECT * FROM dem_rdf WHERE societe = :societe AND nochantier = :nochantier;" - results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).fetchall() - else: - query = "SELECT * FROM dem_rdf WHERE societe = :societe AND nochantier = :nochantier AND date_inter=:date_inter;" - results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'date_inter': date_inter}).first() - return results - -def get_rapport_by_no_id(request,no_id): - query = "SELECT * FROM dem_rdf WHERE no_id = :no_id;" - results = request.dbsession.execute(query, {'no_id': no_id}).first() - return results - -def get_articles_rdf(request): - query = "SELECT * FROM articles WHERE REF LIKE 'RDF%';" - results = request.dbsession.execute(query).fetchall() - return results - -def get_rapport_rdf(request): - # les rapports de RDF (100 derniers) - query = "SELECT * FROM dem_rdf ORDER BY societe, no_id DESC LIMIT 100;" - results = request.dbsession.execute(query, ).fetchall() - return results - -def insert_rapport(request,nodossier,logged_in): - societe = nodossier[0:2] - nochantier = nodossier[3:] - - query = """INSERT INTO dem_rdf (societe, nochantier, cd_cli, nomcli, c_qualite, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, c_telp, nosin, auteur_code) - SELECT societe, no_id, cd_cli, nomcli, c_qualite, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, c_telp, nosin, :auteur_code FROM dem_devis WHERE societe = :societe AND no_id = :nochantier;""" - execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'auteur_code': logged_in}) - -def get_rdf_causes(request, code): - query = "SELECT libelle FROM rdf_causes where code LIKE :code;" - results = request.dbsession.execute(query, {'code': code + '%'}).fetchall() - return results - -def update_rapport(request, nodossier, dateinter, new_values): - societe = nodossier[0:2] - nochantier = int(nodossier[3:]) - - s = '' - for param in new_values.keys(): - if s: - s += ",%s=:%s" % (param, param) - else: - s = "%s=:%s" % (param, param) - new_values['societe'] = societe - new_values['nochantier'] = nochantier - new_values['dateinter'] = dateinter - - query = "UPDATE dem_rdf SET %s WHERE societe=:societe AND nochantier=:nochantier AND date_inter=:dateinter;" % s - execute_query(request, query, new_values) - -def delete_rapport(request, no_id): - - query = "DELETE FROM dem_rdf WHERE no_id = :no_id" - execute_query(request, query, {'no_id': no_id}) - -def update_rapport_validate(request, no_id): - query = "UPDATE dem_rdf SET date_relu=CURRENT_DATE WHERE no_id = :no_id" - execute_query(request, query, {'no_id': no_id}) - -def update_rapport_facture(request, no_id): - query = "UPDATE dem_rdf SET date_facture=CURRENT_DATE WHERE no_id = :no_id" - execute_query(request, query, {'no_id': no_id}) - -def update_rapport_client(request, norapport, nomClient, codeClient): - societe = codeClient[0:2] - cd_cli = int(codeClient[3:]) - query = "UPDATE dem_rdf SET CD_CLI = :cd_cli, NOMCLI = :nomClient WHERE no_id = :norapport" - execute_query(request, query, {'norapport': norapport, 'cd_cli': cd_cli, 'nomClient': nomClient}) - -def insert_facture_rdf(request, societe, nochantier, cd_cli, nomcli, user, ref, date_rapport): - # créer une facture vierge à partir du dossier - query = "CALL spINS_FACTURE_RDF(:societe, :nochantier, :cd_cli, :nomcli, :user, :ref, :date_rapport)" - execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'cd_cli': cd_cli, 'nomcli': nomcli, 'user': user, 'ref': ref, 'date_rapport': date_rapport}) - -def insert_dossier(request, societe, cd_cli, c_nom, c_adr, c_adr2, c_cp, c_ville, c_telp, c_email, nosin, nopol, c_obs, tx_trav): - # créer une dem_devis selon l'email de l'OS - query = """CALL spINS_DEMANDES(:societe, :cd_cli, :c_nom, :c_adr, :c_adr2, :c_cp, :c_ville, :c_telp, :c_email, 'MR', 6, :nosin, :nopol, :c_obs, :tx_trav, 'EMAIL');""" - execute_query(request, query, {'societe': societe, 'cd_cli': cd_cli, 'c_nom': c_nom, 'c_adr': c_adr, 'c_adr2': c_adr2, 'c_cp': c_cp, - 'c_ville': c_ville,'c_telp': c_telp, 'nosin': nosin, 'nopol': nopol, 'c_obs': c_obs, 'tx_trav': tx_trav, 'c_email': c_email}) - - query = "SELECT no_id FROM dem_devis WHERE societe = :societe AND date = curdate() AND cd_cli = :cd_cli ORDER BY no_id desc LIMIT 1;" - results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first() - return results.no_id - -def get_cabinet(request, code): - query = "SELECT * FROM p_cabinet where code = :code;" - results = request.dbsession.execute(query, {'code': code}).first() - return results - -def get_experts(request, code_cab, code_exp): - if code_exp == 0: - query = "SELECT * FROM p_experts where code_cab = :code_cab;" - results = request.dbsession.execute(query, {'code_cab': code_cab}).fetchall() - else: - query = "SELECT * FROM p_experts where code_cab = :code_cab AND code_exp = :code_exp;" - results = request.dbsession.execute(query, {'code_cab': code_cab, 'code_exp': code_exp}).first() - return results - -def insert_log_nuit(request, proc, msg, nodossier): - query = "INSERT INTO t_log_nuit (proc,msg, nodossier) VALUES (:proc, :msg, :nodossier);" - execute_query(request, query, {'proc': proc, 'msg': msg, 'nodossier': nodossier}) - -def get_log_demandes(request, ): - # lire le log de nuit - query = """SELECT *, (SELECT usermaj FROM dem_devis WHERE societe=LEFT(nodossier,2) AND no_id=RIGHT(nodossier,6)) AS user - FROM t_log_nuit WHERE proc = 'GENERER';""" - results = request.dbsession.execute(query, ) - return results.fetchall() +# -*- 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 + +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_chantiers_byName(request, societe, name): + + query = "CALL spGET_CHANTIERS_byName('%s','%s');" % (societe, name) + results = request.dbsession.execute(query).fetchall() + return results + +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, +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 +where d.societe = '%s' and d.no_id=%s;""" % (societe, no_id); + results = request.dbsession.execute(query).first() + return results + +def get_dossier_by_sinistre(request,societe, nosin): + query = "SELECT * FROM dem_devis WHERE societe = '%s' and LEFT(REPLACE(nosin,' ', ''),11) = LEFT(REPLACE('%s',' ', ''),11);" % (societe, nosin); + results = request.dbsession.execute(query).first() + return results + +def get_dossiers_traites(request): + query = "SELECT * FROM dem_devis WHERE usermaj='EMAIL' ORDER BY DATEMAJ"; + results = request.dbsession.execute(query).fetchall() + return results + +def get_clients_byName(request, societe, nom): + query = "SELECT * FROM clients WHERE societe = '%s' and nom LIKE '%s';" % (societe, nom + '%'); + results = request.dbsession.execute(query).fetchall() + return results + + + +def get_dossier_rdv_by_no(request,nodossier, nolig): + societe = nodossier[0:2] + no_id = nodossier[3:] + + if nolig == '0': + query = "SELECT * FROM dem_lig WHERE societe = :societe AND no_id = :no_id;" + results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall() + else: + query = """ +SELECT l.*, d.C_QUALITE, d.C_NOM FROM dem_lig l INNER JOIN dem_devis d ON l.societe = d.societe and l.no_id = d.no_id +where l.societe = '%s' and l.no_id=%s and l.nolig=%s;""" % (societe, no_id, nolig) + 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 + +def update_suivi(request, nodossier, nolig, new_values): + societe = nodossier[0:2] + no_id = nodossier[3:] + + new_values['societe'] = societe + new_values['no_id'] = no_id + 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 dem_lig SET %s" % s + else: + 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 insert_suivi(request, nodossier, comment): + societe = nodossier[0:2] + no_id = nodossier[3:] + + query = "INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, USERMAJ) VALUES (:societe, :no_id, CURRENT_DATE(), :comment, 'EMAIL');" + execute_query(request, query, {'societe': societe, 'no_id': no_id, 'comment': comment}) + + query = "UPDATE dem_devis SET usermaj = 'EMAIL' WHERE SOCIETE=:societe AND NO_ID=:no_id;" + execute_query(request, query, {'societe': societe, 'no_id': no_id}) + +def get_similaires_byChantier(request, societe, C_NOM, C_ADR, C_CP, C_VILLE): + + query = """ +SELECT CONCAT(societe,'-',NO_ID) AS nodossier, dem_devis.* FROM dem_devis +WHERE societe<>:societe AND C_NOM=:C_NOM AND C_ADR=:C_ADR AND C_CP=:C_CP AND C_VILLE=:C_VILLE;""" + results = request.dbsession.execute(query, {'societe': societe, 'C_NOM': C_NOM, 'C_ADR': C_ADR, 'C_CP': C_CP, 'C_VILLE': C_VILLE}).fetchall() + + return results + +def get_docs_attaches(request, nodossier, norapport, origine, filename): + societe = nodossier[0:2] + nochantier = int(nodossier[3:]) + + if filename == '': + query = "SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier AND nodossier=0 AND origine = :origine ORDER BY cree_le;" + else: + query = """SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier + AND nodossier = :norapport AND origine = :origine AND nomfichier = :filename ORDER BY cree_le;""" + results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, + 'norapport': norapport, 'origine': origine, 'filename': filename}).fetchall() + return results + +def get_photos(request, nodossier, norapport, origine): + societe = nodossier[0:2] + nochantier = int(nodossier[3:]) + query = """SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier + AND nodossier = :norapport AND origine = :origine AND UPPER(RIGHT(nomfichier,3)) <> 'PDF' ORDER BY cree_le;""" + results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'origine': origine}).fetchall() + return results + +def delete_photos(request, nodossier, norapport, origine, nomfic): + societe = nodossier[0:2] + nochantier = int(nodossier[3:]) + # supprimer d'abord le fichier + if len(origine) > 1: + file_path = '%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, nomfic) + else: + file_path = '%s/%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport, nomfic) + if os.path.exists(file_path): + os.remove(file_path) + + query = "DELETE FROM dossier_attaches WHERE societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND origine=:origine AND nomfichier=:nomfic;" + execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'origine': origine, 'nomfic': nomfic}) + +def rename_photos(request, nodossier, norapport, origine, nomfic, new_nomfic): + societe = nodossier[0:2] + nochantier = int(nodossier[3:]) + + query = """ + UPDATE dossier_attaches SET nomfichier = :new_nomfic + WHERE societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND origine=:origine AND nomfichier=:nomfic; + """ + execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, + 'origine': origine, 'nomfic': nomfic, 'new_nomfic': new_nomfic}) + +def update_dossier(request, nodossier, new_values): + societe = nodossier[0:2] + nochantier = int(nodossier[3:]) + + s = '' + for param in new_values.keys(): + if param == 'C_VILLE': + new_values['C_VILLE'] = new_values['C_VILLE'].upper() + + if s: + s += ",%s=:%s" % (param, param) + else: + s = "%s=:%s" % (param, param) + new_values['societe'] = societe + new_values['nochantier'] = nochantier + query = "UPDATE dem_devis SET %s WHERE societe=:societe AND no_id=:nochantier" % s + execute_query(request, query, new_values) + + query = "CALL spUPD_CHANTIER_COORD(:societe, :nochantier);" + execute_query(request, query, {'societe': societe, 'nochantier': nochantier}) + +def update_dossier_cloture(request, nodossier, status, logged_in): + societe = nodossier[0:2] + nochantier = int(nodossier[3:]) + # met le montant regle à 1 centime pour terminé le dossier + query = "UPDATE dem_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}) + +def insert_dossier_attaches(request, nodossier, norapport, origine, filename, filesize, user): + societe = nodossier[0:2] + nochantier = int(nodossier[3:]) + + # fichier existe ? + item = get_docs_attaches(request, nodossier, norapport, origine, filename) + if item: + return + # enregistrer dans la table dossier_attaches + query = """INSERT INTO dossier_attaches (societe, nochantier, nodossier, origine, nomfichier, taillefichier, cree_le, usermaj) + VALUES(:societe,:nochantier,:norapport,:origine,:filename,:filesize,NOW(),:user);""" + execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, + 'origine': origine, 'filename': filename, 'filesize': filesize, 'user': user}) + +def get_rapport_by_no(request,nodossier,date_inter): + societe = nodossier[0:2] + nochantier = nodossier[3:] + if date_inter == '': + query = "SELECT * FROM dem_rdf WHERE societe = :societe AND nochantier = :nochantier;" + results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).fetchall() + else: + query = "SELECT * FROM dem_rdf WHERE societe = :societe AND nochantier = :nochantier AND date_inter=:date_inter;" + results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'date_inter': date_inter}).first() + return results + +def get_rapport_by_no_id(request,no_id): + query = "SELECT * FROM dem_rdf WHERE no_id = :no_id;" + results = request.dbsession.execute(query, {'no_id': no_id}).first() + return results + +def get_articles_rdf(request): + query = "SELECT * FROM articles WHERE REF LIKE 'RDF%';" + results = request.dbsession.execute(query).fetchall() + return results + +def get_rapport_rdf(request): + # les rapports de RDF (100 derniers) + query = "SELECT * FROM dem_rdf ORDER BY societe, no_id DESC LIMIT 100;" + results = request.dbsession.execute(query, ).fetchall() + return results + +def insert_rapport(request,nodossier,logged_in): + societe = nodossier[0:2] + nochantier = nodossier[3:] + + query = """INSERT INTO dem_rdf (societe, nochantier, cd_cli, nomcli, c_qualite, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, c_telp, nosin, auteur_code) + SELECT societe, no_id, cd_cli, nomcli, c_qualite, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, c_telp, nosin, :auteur_code FROM dem_devis WHERE societe = :societe AND no_id = :nochantier;""" + execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'auteur_code': logged_in}) + +def get_rdf_causes(request, code): + query = "SELECT libelle FROM rdf_causes where code LIKE :code;" + results = request.dbsession.execute(query, {'code': code + '%'}).fetchall() + return results + +def update_rapport(request, nodossier, dateinter, new_values): + societe = nodossier[0:2] + nochantier = int(nodossier[3:]) + + s = '' + for param in new_values.keys(): + if s: + s += ",%s=:%s" % (param, param) + else: + s = "%s=:%s" % (param, param) + new_values['societe'] = societe + new_values['nochantier'] = nochantier + new_values['dateinter'] = dateinter + + query = "UPDATE dem_rdf SET %s WHERE societe=:societe AND nochantier=:nochantier AND date_inter=:dateinter;" % s + execute_query(request, query, new_values) + +def delete_rapport(request, no_id): + + query = "DELETE FROM dem_rdf WHERE no_id = :no_id" + execute_query(request, query, {'no_id': no_id}) + +def update_rapport_validate(request, no_id): + query = "UPDATE dem_rdf SET date_relu=CURRENT_DATE WHERE no_id = :no_id" + execute_query(request, query, {'no_id': no_id}) + +def update_rapport_facture(request, no_id): + query = "UPDATE dem_rdf SET date_facture=CURRENT_DATE WHERE no_id = :no_id" + execute_query(request, query, {'no_id': no_id}) + +def update_rapport_client(request, norapport, nomClient, codeClient): + societe = codeClient[0:2] + cd_cli = int(codeClient[3:]) + query = "UPDATE dem_rdf SET CD_CLI = :cd_cli, NOMCLI = :nomClient WHERE no_id = :norapport" + execute_query(request, query, {'norapport': norapport, 'cd_cli': cd_cli, 'nomClient': nomClient}) + +def insert_facture_rdf(request, societe, nochantier, cd_cli, nomcli, user, ref, date_rapport): + # créer une facture vierge à partir du dossier + query = "CALL spINS_FACTURE_RDF(:societe, :nochantier, :cd_cli, :nomcli, :user, :ref, :date_rapport)" + execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'cd_cli': cd_cli, 'nomcli': nomcli, 'user': user, 'ref': ref, 'date_rapport': date_rapport}) + +def insert_dossier(request, societe, cd_cli, c_nom, c_adr, c_adr2, c_cp, c_ville, c_telp, c_email, nosin, nopol, c_obs, tx_trav): + # créer une dem_devis selon l'email de l'OS + query = """CALL spINS_DEMANDES(:societe, :cd_cli, :c_nom, :c_adr, :c_adr2, :c_cp, :c_ville, :c_telp, :c_email, 'MR', 6, :nosin, :nopol, :c_obs, :tx_trav, 'EMAIL');""" + execute_query(request, query, {'societe': societe, 'cd_cli': cd_cli, 'c_nom': c_nom, 'c_adr': c_adr, 'c_adr2': c_adr2, 'c_cp': c_cp, + 'c_ville': c_ville,'c_telp': c_telp, 'nosin': nosin, 'nopol': nopol, 'c_obs': c_obs, 'tx_trav': tx_trav, 'c_email': c_email}) + + query = "SELECT no_id FROM dem_devis WHERE societe = :societe AND date = curdate() AND cd_cli = :cd_cli ORDER BY no_id desc LIMIT 1;" + results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first() + return results.no_id + +def get_cabinet(request, code): + query = "SELECT * FROM p_cabinet where code = :code;" + results = request.dbsession.execute(query, {'code': code}).first() + return results + +def get_experts(request, code_cab, code_exp): + if code_exp == 0: + query = "SELECT * FROM p_experts where code_cab = :code_cab;" + results = request.dbsession.execute(query, {'code_cab': code_cab}).fetchall() + else: + query = "SELECT * FROM p_experts where code_cab = :code_cab AND code_exp = :code_exp;" + results = request.dbsession.execute(query, {'code_cab': code_cab, 'code_exp': code_exp}).first() + return results + +def insert_log_nuit(request, proc, msg, nodossier): + query = "INSERT INTO t_log_nuit (proc,msg, nodossier) VALUES (:proc, :msg, :nodossier);" + execute_query(request, query, {'proc': proc, 'msg': msg, 'nodossier': nodossier}) + +def get_log_demandes(request, ): + # lire le log de nuit + query = """SELECT *, (SELECT usermaj FROM dem_devis WHERE societe=LEFT(nodossier,2) AND no_id=RIGHT(nodossier,6)) AS user + FROM t_log_nuit WHERE proc = 'GENERER';""" + results = request.dbsession.execute(query, ) + return results.fetchall() + +def get_status_by_id(request, code): + query = """SELECT libelle FROM bddevfac.p_statuts WHERE code = :code""" + results = request.dbsession.execute(query, {'code': code}) + return results.fetchall() \ No newline at end of file diff --git a/mondumas/templates/dossier/dossier_view.pt b/mondumas/templates/dossier/dossier_view.pt index 926cf36..9b029ed 100644 --- a/mondumas/templates/dossier/dossier_view.pt +++ b/mondumas/templates/dossier/dossier_view.pt @@ -329,20 +329,30 @@

Voulez-vous clôturer le dossier ?

- -
- - - +
+ +
+ +
- -
- +
+
+ +
+ +
+