diff --git a/mondumas/models/default.py b/mondumas/models/default.py index fa17662..8308781 100644 --- a/mondumas/models/default.py +++ b/mondumas/models/default.py @@ -130,26 +130,25 @@ def get_codespostaux(request, codep): return results def get_dd_restant(request): - query = """SELECT SUM(IF(societe='PE',1,0)) AS nb_PE, - SUM(IF(societe='ME',1,0)) AS nb_ME, - SUM(IF(societe='PL',1,0)) AS nb_PL - FROM dem_devis WHERE STATUS=0;""" + query = """SELECT (SELECT count(*) FROM dem_devis WHERE societe='PE' AND STATUS=0) AS nb_PE, + (SELECT count(*) FROM dem_devis WHERE societe='ME' AND STATUS=0) AS nb_ME, + (SELECT count(*) FROM dem_devis WHERE societe='PL' AND STATUS=0) AS nb_PL;""" results = request.dbsession.execute(query).first() return results def get_de_restant(request): - query = """SELECT SUM(IF(societe='PE',1,0)) AS nb_PE, - SUM(IF(societe='ME',1,0)) AS nb_ME, - SUM(IF(societe='PL',1,0)) AS nb_PL - FROM devis WHERE STATUS<4;""" + # les suivis des attachés commerciaux dnas les 4 derniers jours + query = """SELECT +(SELECT count(*) FROM dem_lig WHERE societe='PE' AND DATEDIFF(CURDATE(), date) <= 7 AND usermaj in ('CG','MP','RV','VD')) AS nb_PE, +(SELECT count(*) FROM dem_lig WHERE societe='ME' AND DATEDIFF(CURDATE(), date) <= 7 AND usermaj in ('CG','MP','RV','VD')) AS nb_ME, +(SELECT count(*) FROM dem_lig WHERE societe='PL' AND DATEDIFF(CURDATE(), date) <= 7 AND usermaj in ('CG','MP','RV','VD')) AS nb_PL;""" results = request.dbsession.execute(query).first() return results def get_fa_restant(request): - query = """SELECT SUM(IF(societe='PE',1,0)) AS nb_PE, - SUM(IF(societe='ME',1,0)) AS nb_ME, - SUM(IF(societe='PL',1,0)) AS nb_PL - FROM facture WHERE STATUS<8;""" + query = """SELECT (SELECT count(*) FROM facture WHERE societe='PE' AND STATUS < 8) AS nb_PE, + (SELECT count(*) FROM facture WHERE societe='ME' AND STATUS < 8) AS nb_ME, + (SELECT count(*) FROM facture WHERE societe='PL' AND STATUS < 8) AS nb_PL;""" results = request.dbsession.execute(query).first() return results diff --git a/mondumas/models/devis.py b/mondumas/models/devis.py index 3e7d4ad..c14b7fa 100644 --- a/mondumas/models/devis.py +++ b/mondumas/models/devis.py @@ -235,8 +235,3 @@ def update_devis_cloture(request, nodevis, status, logged_in): 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}) -def get_devis_en_att(request, societe): - query = """SELECT d.date, LPAD(d.no_id,6,'0') AS numero, d.nomcli, CONCAT(d.c_nom,'; ',d.c_adr,'; ',d.c_ville) AS chantier, d.totalht AS montant, d.status, s.libelle, d.nosin, d.nopol, d.usermaj - FROM devis d JOIN p_statuts s ON d.STATUS = s.CODE WHERE d.societe=:societe AND d.STATUS < 4 ORDER BY d.societe, d.STATUS, d.nomcli;""" - results = request.dbsession.execute(query, {'societe': societe}).fetchall() - return results \ No newline at end of file diff --git a/mondumas/models/dossier.py b/mondumas/models/dossier.py index 6aac63f..445ffa0 100644 --- a/mondumas/models/dossier.py +++ b/mondumas/models/dossier.py @@ -58,7 +58,13 @@ def get_clients_byName(request, societe, nom): results = request.dbsession.execute(query).fetchall() return results - +def get_derniers_suivis(request): + query = """SELECT l.*, CONCAT(l.societe,'-',l.no_id) AS nodossier, 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 DATEDIFF(CURDATE(), l.date) <= 7 AND l.usermaj in ('CG','MP','RV','VD') ORDER BY l.date, l.societe DESC;""" + results = request.dbsession.execute(query, ).fetchall() + return results + def get_dossier_rdv_by_no(request,nodossier, nolig): societe = nodossier[0:2] @@ -287,6 +293,16 @@ def update_rapport_client(request, norapport, nomClient, codeClient): 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 update_rapport_nochantier(request, norapport, new_nochantier): + # controler que le no du nouveau dossier existe + dossier = get_dossier_by_no(request,'PL-' + new_nochantier) + if dossier: + query = "UPDATE dem_rdf SET nochantier = :new_nochantier WHERE no_id = :norapport" + execute_query(request, query, {'norapport': norapport, 'new_nochantier': new_nochantier}) + return "OK" + else: + return "NOK" + 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)" diff --git a/mondumas/routes.py b/mondumas/routes.py index 7e0c413..1256eb7 100644 --- a/mondumas/routes.py +++ b/mondumas/routes.py @@ -27,7 +27,6 @@ def includeme(config): config.add_route('devis_web', '/devis_web/{nodevis}') config.add_route('devis_view', '/devis_view/{nodevis}') config.add_route('devis_preview', '/devis_preview/{nodevis}') - config.add_route('devis_en_att','/devis_en_att') config.add_route('devis_select', '/devis_select/{date}') config.add_route('devis_selected', '/devis_selected/{goto}/{date}/{nodevis}') config.add_route('factures_en_att','/factures_en_att') @@ -39,6 +38,7 @@ def includeme(config): config.add_route('demandes_dl','/demandes_dl/{societe}/{email_from}/{email_uid}') config.add_route('dem_devis','/dem_devis') config.add_route('delete_img','/delete_img/{nodossier}/{norapport}/{origine}/{nomfic}') + config.add_route('dern_suivis','/dern_suivis') config.add_route('dossier_edit', '/dossier_edit/{nodossier}') config.add_route('dossier_lookup', '/dossier_lookup') config.add_route('dossier_select', '/dossier_select/{date}') @@ -50,6 +50,7 @@ def includeme(config): config.add_route('rdf_client','/rdf_client/{no_id}') config.add_route('rdf_edit','/rdf_edit/{nodossier}/{date_inter}') config.add_route('rdf_list','/rdf_list') + config.add_route('rdf_nochantier','/rdf_nodossier/{no_id}') config.add_route('rdf_rapport','/rdf_rapport/{no_id}') config.add_route('rdf_view','/rdf_view/{no_id}') config.add_route('rotate_img','/rotate_img/{nodossier}/{norapport}/{origine}/{nomfic}/{angle}') diff --git a/mondumas/templates/default/home.pt b/mondumas/templates/default/home.pt index b2ca603..eb30e74 100644 --- a/mondumas/templates/default/home.pt +++ b/mondumas/templates/default/home.pt @@ -104,12 +104,12 @@
- +
- DEVIS - EN COURS + CHANTIERS + DERNIERS SUIVIS ${nb_de_restants.nb_PE} ${nb_de_restants.nb_ME} ${nb_de_restants.nb_PL} diff --git a/mondumas/templates/devis/devis_en_att.pt b/mondumas/templates/devis/devis_en_att.pt deleted file mode 100644 index 094d0c9..0000000 --- a/mondumas/templates/devis/devis_en_att.pt +++ /dev/null @@ -1,108 +0,0 @@ - -
- -
- -
- -
- -
- - - - - - -
-
- -
-
- -
- -
- - - - - - - - - - - - - -
NuméroDateClientChantierMontantSinistreStatutUti.
-
-
-
- - - -
-
- - diff --git a/mondumas/templates/dossier/dern_suivis.pt b/mondumas/templates/dossier/dern_suivis.pt new file mode 100644 index 0000000..8dc62bf --- /dev/null +++ b/mondumas/templates/dossier/dern_suivis.pt @@ -0,0 +1,31 @@ + +
+ +
+ +
+ + + + + + + + + + + + + +
DateDossierAction - commentairePar
${item.DATE.strftime('%d-%m-%Y')} + + ${item.nodossier} - ${item.C_NOM} + ${item.COMMENT}${item.USERMAJ}
+
+
+
+ +
+
+ + diff --git a/mondumas/templates/dossier/dossier_edit.pt b/mondumas/templates/dossier/dossier_edit.pt index 61683df..7ea9b34 100644 --- a/mondumas/templates/dossier/dossier_edit.pt +++ b/mondumas/templates/dossier/dossier_edit.pt @@ -65,6 +65,16 @@ data-fv-stringlength-message="20 caractères maximum" />
+
+ +
+ +
+

EMAIL et TELEPHONES

diff --git a/mondumas/templates/dossier/dossier_view.pt b/mondumas/templates/dossier/dossier_view.pt index 2cac4c8..6d52228 100644 --- a/mondumas/templates/dossier/dossier_view.pt +++ b/mondumas/templates/dossier/dossier_view.pt @@ -26,15 +26,17 @@ Etage - Code
Ascenseur
+ Observation
Téléphone 1 et 2
- Portable 1 et 2 + Portable 1 et 2
${dossier.C_ETAGE} - ${dossier.C_CODE}
NON
OUI
+ ${dossier.C_OBS}
${dossier.C_TEL1} - ${dossier.C_TEL2}
- ${dossier.C_TELP} - ${dossier.C_FAX} + ${dossier.C_TELP} - ${dossier.C_FAX}
@@ -54,14 +56,12 @@ Police
Sinistre
Votre référence
- Observation
Travaux
${dossier.NOPOL}
${dossier.NOSIN}
${dossier.VREF}
- ${dossier.C_OBS}
${dossier.TX_TRAV}
@@ -97,12 +97,12 @@
-

Statut : ${dossier.libelle}

+
+

+ Statut : ${dossier.libelle}    + [ Modifier le statut ] +

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

-

- Modif. statut dossier -

diff --git a/mondumas/templates/dossier/rdf_nochantier.pt b/mondumas/templates/dossier/rdf_nochantier.pt new file mode 100644 index 0000000..ece17ad --- /dev/null +++ b/mondumas/templates/dossier/rdf_nochantier.pt @@ -0,0 +1,79 @@ + +
+ +
+
+ +
+
+ +
+ +
+

${rapport.no_id}

+
+ +
+

${rapport.date_inter.strftime('%d-%m-%Y')}

+
+
+
+ +
+

${rapport.C_QUALITE} ${rapport.C_NOM}

+
+
+
+ +
+

${rapport.nochantier}

+
+
+
+ +
+ +
+
+ +
+
+ + Annuler + +
+
+
+
+
+
+
+ +
+
+ + + + +
+ diff --git a/mondumas/templates/dossier/rdf_view.pt b/mondumas/templates/dossier/rdf_view.pt index 16b22e2..dc671f2 100644 --- a/mondumas/templates/dossier/rdf_view.pt +++ b/mondumas/templates/dossier/rdf_view.pt @@ -15,9 +15,13 @@
- : ${nodossier}
: ${norapport}
: ${rapport.date_inter.strftime('%d-%m-%Y')}
+ : ${nodossier}
+

+ [ Changer le No dossier ] +

ADRESSE d'INTERVENTION

diff --git a/mondumas/views/devis.py b/mondumas/views/devis.py index a827a72..9fe9458 100644 --- a/mondumas/views/devis.py +++ b/mondumas/views/devis.py @@ -401,49 +401,6 @@ def devis_lig_mv(request): request.session.flash(u"La ligne de devis a été déplacée avec succès.", 'success') return HTTPFound(location=request.route_url("devis_web", nodevis=nodevis)) -@view_config(route_name='devis_en_att', renderer='../templates/devis/devis_en_att.pt', permission='view') -@view_config(route_name='devis_select', renderer='../templates/devis/devis_en_att.pt', permission='view') -def devis_en_att(request): - - if 'devis_select' in request.current_route_path() : - # récupérer les paramètres de l'appel de la view - datePlan = request.matchdict['date'] - # sélectionner devis -> goto planning - goto_url = '/devis_selected/agenda/%s/' % datePlan - url = request.route_url('devis_selected', date=datePlan) - else: - # recherche devis en att -> goto fiche devis - goto_url = '/devis_selected/devis_view/%s/' % date.today().strftime('%Y-%m-%d') - url = request.route_url('devis_en_att') - - logged_in = request.authenticated_userid.upper() - url = request.route_url('devis_en_att') - member = get_member_by_id(request, logged_in) - societe_defaut = member.societe - societe = societe_defaut - access_defaut = member.access - liste=[] - - if 'form.submitted' in request.params: - societe = request.params['societe'] - - list_devis_en_att = get_devis_en_att(request, societe) - - for item in list_devis_en_att: - d = ('%s-DE%s' % (societe, item.numero),item.date.strftime('%d-%m-%Y'), item.nomcli, item.chantier, to_euro(item.montant), - item.nosin, item.libelle, item.usermaj) - liste.append(d) - - order_option = 'desc' - - return { - 'page_title': "Devis en attente d'acceptation", - 'url': url, - 'goto_url': goto_url, - 'dt_data': json.dumps(liste), - 'societe': societe, - 'order_option': order_option, - } @view_config(route_name='devis_selected', permission='view') def devis_selected(request): diff --git a/mondumas/views/dossier.py b/mondumas/views/dossier.py index 81ced3b..e6b6afd 100644 --- a/mondumas/views/dossier.py +++ b/mondumas/views/dossier.py @@ -607,6 +607,45 @@ def rdf_client(request): 'rapport': rapport, } +@view_config(route_name='rdf_nochantier', renderer='../templates/dossier/rdf_nochantier.pt', permission='view') +def rdf_nochantier(request): + logged_in = request.authenticated_userid.upper() + norapport = request.matchdict['no_id'] + message = '' + + # lire code accès du user + access = get_userAccess(request, logged_in) + if access == 0: + request.session.flash("Vous n'avez pas les droits nécessaires pour changer de client.", 'danger') + return HTTPFound(location=request.route_url('rdf_view', no_id=norapport)) + + url = request.route_url('rdf_nochantier', no_id=norapport) + + # lire le rapport + rapport = get_rapport_by_no_id(request, norapport) + nodossier = 'PL-' + str(rapport.nochantier) + + if 'form.submitted' in request.params: + new_nochantier = request.params['new_nochantier'] + if len(new_nochantier) == 6: + retour = update_rapport_nochantier(request, norapport, new_nochantier) + if retour == "OK": + request.session.flash("Le numéro du dossier été modifié avec succès.", 'success') + return HTTPFound(location=request.route_url('rdf_view', no_id=norapport)) + else: + message = "Le numéro du dossier n'existe pas : %s" % new_nochantier + else: + message = "Un numero de dossier doit avoir 6 chiffres" + + return { + 'page_title': "Changer le no du dossier du rapport n° %s" % norapport, + 'url': url, + 'message': message, + 'access': access, + 'norapport': norapport, + 'rapport': rapport, + } + @view_config(route_name='rdf_view', renderer='../templates/dossier/rdf_view.pt', permission='view') def rdf_view(request): logged_in = request.authenticated_userid.upper() @@ -1448,12 +1487,9 @@ def resize_photos(image_file): img_org = Image.open(image_file) # get the size of the original image width_org, height_org = img_org.size - # set the resizing factor so the aspect ratio can be retained - # factor > 1.0 increases size - # factor < 1.0 decreases size + # set the max width width = 1366 - factor = (width/float(width_org)) - height = int(height_org * factor) + height = int(height_org / width_org * width) # best down-sizing filter img_anti = img_org.resize((width, height), Image.ANTIALIAS) # split image filename into name and extension @@ -1602,7 +1638,7 @@ def note_edit(request): url = request.route_url('note_edit', nodossier=nodossier, noligne=noligne) message = "" - note = get_dem_notes(request, nodossier, noligne) + note = get_dem_notes(request, nodossier, noligne, 'NOTE') if 'form.submitted' in request.params: notes = request.params["notes"] @@ -1631,3 +1667,12 @@ def croquis_edit(request): 'page_title': 'NOUVEAU CROQUIS', } +@view_config(route_name='dern_suivis', renderer='../templates/dossier/dern_suivis.pt', permission='view') +def dern_suivis(request): + # lire les derniers suivis créés par les attachés de clientèle + items = get_derniers_suivis(request) + + return { + 'page_title': 'Derniers suivis créés', + 'items': items, + } \ No newline at end of file