diff --git a/mondumas/layout.py b/mondumas/layout.py index 988c0c2..1f564fe 100644 --- a/mondumas/layout.py +++ b/mondumas/layout.py @@ -3,8 +3,10 @@ from pyramid_layout.layout import layout_config from .security import groupfinder from .views.default import ( to_euro, + to_euroz, to_percent, to_decimal, + to_decz, ) @layout_config(template='templates/layouts/global_layout.pt') @@ -22,6 +24,12 @@ class GlobalLayout(object): def to_euro(self, x): return to_euro(x) + def to_euroz(self, x): + return to_euroz(x) + + def to_decz(self, x): + return to_euroz(x) + def to_percent(self, x): return to_percent(x) diff --git a/mondumas/models/dossier.py b/mondumas/models/dossier.py index 7d4c292..0e60eff 100644 --- a/mondumas/models/dossier.py +++ b/mondumas/models/dossier.py @@ -37,6 +37,36 @@ where d.societe = '%s' and d.no_id=%s;""" % (societe, no_id); results = request.dbsession.execute(query).first() return results +def get_devis_by_no(request,nodossier): + 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_dossier_rdv_by_no(request,nodossier, nolig): societe = nodossier[0:2] no_id = nodossier[3:] @@ -81,3 +111,27 @@ def update_suivi(request, nodossier, nolig, new_values): execute_query(request, query, new_values) +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_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 diff --git a/mondumas/routes.py b/mondumas/routes.py index 6791447..0fc2c60 100644 --- a/mondumas/routes.py +++ b/mondumas/routes.py @@ -7,15 +7,17 @@ def includeme(config): # default config.add_route('home', '/') config.add_route('changer_mdp', '/changer_mdp') - config.add_route('dossier_lookup', '/chantier_lookup') - config.add_route('dossier_select', '/dossier_select/{date}') - config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}') - config.add_route('dossier_view', '/dossier_view/{nodossier}') config.add_route('envoyer_mdp', '/envoyer_mdp') config.add_route('login', '/login') config.add_route('logout', '/logout') config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}') config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}') + # dossier + config.add_route('dossier_lookup', '/chantier_lookup') + config.add_route('dossier_select', '/dossier_select/{date}') + config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}') + config.add_route('dossier_view', '/dossier_view/{nodossier}') + config.add_route('devis_view', '/devis_view/{nodossier}') # parametres config.add_route('parametres', '/parametres') config.add_route('dashboard', '/dashboard') diff --git a/mondumas/templates/default/home.pt b/mondumas/templates/default/home.pt index 71472ba..9e5d434 100644 --- a/mondumas/templates/default/home.pt +++ b/mondumas/templates/default/home.pt @@ -17,7 +17,7 @@
-

RECH. CHANTIER

+

RECH. DOSSIER


diff --git a/mondumas/templates/dossier/devis_view.pt b/mondumas/templates/dossier/devis_view.pt index 079a5ab..95b7ba6 100644 --- a/mondumas/templates/dossier/devis_view.pt +++ b/mondumas/templates/dossier/devis_view.pt @@ -5,7 +5,7 @@
- +

CHANTIER

@@ -83,82 +83,23 @@

Statut : ${dossier.STATUS}

-
- -
-
-

- -  SUIVI -

-
-
-
-

- Nouvelle ligne

- - - - - - - - - - - - - - - - -
DateActionRendez-vousRéf. lettrePar
- - ${detail.DATE.strftime('%d-%m-%Y')} - - ${detail.COMMENT} ${detail.COMMENTVI} - - ${detail.COMMENT} ${detail.COMMENTVI} - - - - ${detail.rdv_debut.strftime('%d-%m-%Y %H:%M')} avec ${detail.LISTE} - - ${detail.REF_LET}${detail.USERMAJ}
-
-
-
- -
- -
-
- - - - - - - - - - - - - - - -
NuméroDateClientMontantStatut
${detail.TYPE}-${detail.numero}${detail.date.strftime('%d-%m-%Y')}${detail.nomcli}${layout.to_euro(detail.montant)}${detail.status}
-
-
-
-
- - + + + + + + + + + + + + + + + + +
RéfDésignationQtéPU HTMontant HT
${detail.REF}${detail.LIB}${layout.to_decz(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 8bc5ace..3bb3c7e 100644 --- a/mondumas/templates/dossier/dossier_view.pt +++ b/mondumas/templates/dossier/dossier_view.pt @@ -89,14 +89,14 @@

-  SUIVI +  SUIVI du DOSSIER

-
+

Nouvelle ligne

- +
@@ -133,7 +133,7 @@

-  DEVIS - FACTURES +  DEVIS - FACTURES

@@ -159,6 +159,37 @@
+ +
+ +
+
+
Date Action
+ + + + + + + + + + + + + + +
NuméroDateClientMontantStatut
+ ${detail.nodossier} + ${detail.DATE.strftime('%d-%m-%Y')}${detail.NOMCLI}${layout.to_euro(detail.MTTRAV)}${detail.STATUS}
+
+
+
diff --git a/mondumas/views/default.py b/mondumas/views/default.py index e6d176f..3584986 100644 --- a/mondumas/views/default.py +++ b/mondumas/views/default.py @@ -38,6 +38,21 @@ def to_euro(x): #else: return (u"%.2f €" % x).replace('.', ',') +def to_euroz(x): + """Takes a float and returns a string""" + if x == 0: + return "" + else: + return (u"%.2f €" % x).replace('.', ',') + +def to_decz(x): + """Takes a decimal and returns a string""" + if x == 0: + return "" + else: + return (u"%.2f" % x).replace('.', ',') + + def to_sha1(message): return hashlib.sha1(message.encode('utf-8')).hexdigest() diff --git a/mondumas/views/dossier.py b/mondumas/views/dossier.py index 896a7b7..eaf4889 100644 --- a/mondumas/views/dossier.py +++ b/mondumas/views/dossier.py @@ -24,6 +24,7 @@ from ..security import groupfinder import json +from ..views.default import * from ..models.default import * from ..models.dossier import * @@ -87,17 +88,21 @@ def dossier_view(request): dossier = get_dossier_by_no(request, nodossier) if dossier is None: request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger') - return HTTPFound(location=request.route_url("chantier_lookup")) + return HTTPFound(location=request.route_url("dossier_lookup")) # lire tous le suivi du dossier details = get_dossier_rdv_by_no(request, nodossier, '0') # lire toutes les dossiers du chantiers documents = get_documents_byChantier(request, nodossier) + # lire toutes les dossiers similaires + similaires = get_similaires_byChantier(request, dossier.societe, dossier.C_NOM, dossier.C_ADR, dossier.C_CP, dossier.C_VILLE) + return { 'page_title': u"Dossier : %s" % (nodossier), 'nodossier': nodossier, 'dossier': dossier, 'details': details, 'documents': documents, + 'similaires': similaires, } @view_config(route_name='devis_view', renderer='../templates/dossier/devis_view.pt', permission='view') @@ -105,20 +110,26 @@ def devis_view(request): nodossier = request.matchdict['nodossier'] url = request.route_url("devis_view", nodossier=nodossier) - dossier = get_dossier_by_no(request, nodossier) + type_doc = nodossier[3:5] + if type_doc == 'DE': + page_title = u"Devis no : %s" % (nodossier) + elif type_doc == 'FA': + page_title = u"Facture no : %s" % (nodossier) + else: + page_title = u"Proforma no : %s" % (nodossier) + + dossier = get_devis_by_no(request, nodossier) if dossier is None: - request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger') - return HTTPFound(location=request.route_url("chantier_lookup")) - # lire tous le suivi du dossier - details = get_dossier_rdv_by_no(request, nodossier, '0') - # lire toutes les dossiers du chantiers - documents = get_documents_byChantier(request, nodossier) + request.session.flash(u"Le document no %s est introuvable" % (nodossier), 'danger') + return HTTPFound(location=request.route_url("dossier_lookup")) + # lire tous les lignes du devis + details = get_devis_lig_by_no(request, nodossier) + return { - 'page_title': u"Dossier : %s" % (nodossier), + 'page_title': page_title, 'nodossier': nodossier, 'dossier': dossier, 'details': details, - 'documents': documents, } @view_config(route_name='dossier_selected', permission='view')