diff --git a/diff.txt b/diff.txt
new file mode 100644
index 0000000..e69de29
diff --git a/mondumas/models/default.py b/mondumas/models/default.py
index 93e6984..226cab7 100644
--- a/mondumas/models/default.py
+++ b/mondumas/models/default.py
@@ -113,3 +113,8 @@ def delete_membre(request, cd_uti):
query = "DELETE FROM p_users WHERE cd_uti = :cd_uti ;"
execute_query(request, query, {'cd_uti': cd_uti})
+def get_article(request, libelle):
+ query = "SELECT * FROM articles WHERE libart like :libelle;"
+ results = request.dbsession.execute(query, {'libelle': libelle + "%"})
+ return results.fetchall()
+
diff --git a/mondumas/models/devis.py b/mondumas/models/devis.py
index 1120736..302a184 100644
--- a/mondumas/models/devis.py
+++ b/mondumas/models/devis.py
@@ -30,13 +30,13 @@ def get_devis_byName(request, societe, 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 LIMIT 300;;""" % (societe, name)
+ 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 ORDER BY no_id DESC LIMIT 300;"""
+ 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%' LIMIT 500)"""
+ 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
@@ -88,6 +88,20 @@ def get_devis_lig_by_no(request,nodossier):
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:]
@@ -111,3 +125,24 @@ def get_devis_by_no(request,nodossier):
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)
diff --git a/mondumas/routes.py b/mondumas/routes.py
index 173113c..051a952 100644
--- a/mondumas/routes.py
+++ b/mondumas/routes.py
@@ -10,6 +10,7 @@ def includeme(config):
config.add_route('ajax_client', '/ajax_client')
config.add_route('ajax_codepostal', '/ajax_codepostal')
config.add_route('ajax_lookup', '/ajax_lookup')
+ config.add_route('ajax_texte', '/ajax_texte')
config.add_route('changer_mdp', '/changer_mdp')
config.add_route('envoyer_mdp', '/envoyer_mdp')
config.add_route('login', '/login')
@@ -18,9 +19,10 @@ def includeme(config):
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')
config.add_route('init_mdp', '/init_mdp/{user}/{lien}')
# devis
+ config.add_route('devis_ligne', '/devis_ligne/{type_ligne}/{nodossier}/{nolig}')
config.add_route('devis_list', '/devis_list')
config.add_route('devis_create', '/devis_create/{nodossier}')
- config.add_route('devis_lignes', '/devis_lignes/{nodossier}')
+ config.add_route('devis_web', '/devis_web/{nodossier}')
config.add_route('devis_view', '/devis_view/{nodossier}')
# dossier
config.add_route('demandes','/demandes')
diff --git a/mondumas/static/css/style.less b/mondumas/static/css/style.less
index 0569245..8f1fa17 100644
--- a/mondumas/static/css/style.less
+++ b/mondumas/static/css/style.less
@@ -88,6 +88,12 @@
.modal-dialog {
top:7%;
}
+.type-ligne-panel {
+ padding-left: 25px;
+ margin-top: 5px;
+ margin-bottom: 20px;
+ display: none;
+}
.footer {
background-color: #2f2f2f;
diff --git a/mondumas/templates/default/home.pt b/mondumas/templates/default/home.pt
index 57f93ac..66e6125 100644
--- a/mondumas/templates/default/home.pt
+++ b/mondumas/templates/default/home.pt
@@ -18,7 +18,7 @@
-
-
diff --git a/mondumas/templates/dossier/dossier_view.pt b/mondumas/templates/dossier/dossier_view.pt
index 3b6e566..d97e21b 100644
--- a/mondumas/templates/dossier/dossier_view.pt
+++ b/mondumas/templates/dossier/dossier_view.pt
@@ -198,7 +198,7 @@
${detail.nodossier}
- ${detail.nodossier}-${detail.web}
+ ${detail.nodossier}-${detail.web}
|
${detail.date.strftime('%d-%m-%Y')} |
${detail.nomcli} |
diff --git a/mondumas/views/default.py b/mondumas/views/default.py
index bbc63ac..776c436 100644
--- a/mondumas/views/default.py
+++ b/mondumas/views/default.py
@@ -314,4 +314,19 @@ def ajax_client(request):
return Response(json.dumps(liste))
+@view_config(route_name='ajax_texte')
+def ajax_texte(request):
+ recherche = request.GET['recherche']
+
+ # lire les codes postaux commencant par
+ items = get_article(request, recherche)
+
+ liste=[]
+ for row in items:
+ d = row.LIBART
+ liste.append(d)
+
+ return Response(json.dumps(liste))
+
+
diff --git a/mondumas/views/devis.py b/mondumas/views/devis.py
index 0567d02..faac862 100644
--- a/mondumas/views/devis.py
+++ b/mondumas/views/devis.py
@@ -95,25 +95,42 @@ def devis_view(request):
'bg_color': bg_color,
}
-@view_config(route_name='devis_lignes', renderer='../templates/devis/devis_lignes.pt', permission='view')
-def devis_lignes(request):
+@view_config(route_name='devis_web', renderer='../templates/devis/devis_web.pt', permission='view')
+def devis_web(request):
nodossier = request.matchdict['nodossier']
societe = nodossier[0:2]
- url = request.route_url("devis_lignes", nodossier=nodossier)
+ no_id = nodossier[5:]
+ url = request.route_url("devis_web", nodossier=nodossier)
+ logged_in = request.authenticated_userid.upper()
dossier = get_devis_by_no(request, nodossier)
if dossier is None:
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)
+ details = get_devis_lignes_by_no(request, nodossier, '0')
# select background color according to society
bg_color = "bg-%s" % societe
# -- ajouter une ligne
- if 'form.added' in request.params:
+ if 'form.submited' in request.params:
type_lig = request.params['type_lig']
- import pdb;pdb.set_trace()
+ if type_lig == 'ST':
+ # ajout d'un SOUS-TOTAL
+ new_values = {}
+ new_values['type_ligne'] = 'ST'
+ new_values['ref'] = 'ST'
+ new_values['libelle'] = 'Sous-total'
+ new_values['usermaj'] = logged_in
+ new_values['societe'] = societe
+ new_values['no_id'] = no_id
+ new_values['nolig'] = len(details) + 1
+ update_devis_ligne(request, nodossier, '0', new_values)
+ return HTTPFound(location=url)
+ else:
+ return HTTPFound(request.route_url("devis_ligne", type_ligne=type_lig, nodossier=nodossier, nolig='0'))
+
return {
'page_title': "Devis no : %s W" % (nodossier),
@@ -123,3 +140,91 @@ def devis_lignes(request):
'details': details,
'bg_color': bg_color,
}
+
+@view_config(route_name='devis_ligne', renderer='../templates/devis/devis_ligne.pt', permission='view')
+def devis_ligne(request):
+ type_ligne = request.matchdict['type_ligne']
+ nodossier = request.matchdict['nodossier']
+ nolig = request.matchdict['nolig']
+ societe = nodossier[0:2]
+ no_id = nodossier[5:]
+ url = request.route_url("devis_ligne", type_ligne=type_ligne, nodossier=nodossier, nolig=nolig)
+ logged_in = request.authenticated_userid.upper()
+ message = ''
+
+ dossier = get_devis_by_no(request, nodossier)
+ if dossier is None:
+ request.session.flash(u"Le document no %s est introuvable" % (nodossier), 'danger')
+ return HTTPFound(location=request.route_url("dossier_lookup"))
+ # lire le nombre total de lignes du devis
+ lignes = get_devis_lignes_by_no(request, nodossier, '0')
+ nb_lignes = len(lignes)
+
+ if nolig == '0':
+ # nouveau
+ ligne = {}
+ ligne['type_ligne'] = type_ligne
+ ligne['ref'] = ''
+ ligne['qte'] = 0
+ ligne['prixht'] = 0
+ ligne['libelle'] = ''
+ ligne['usermaj'] = logged_in
+ ligne['datemaj'] = datetime.now()
+ page_title= 'Nouvelle ligne %s' % type_ligne
+ else:
+ # lire la ligne du devis
+ ligne = get_devis_lignes_by_no(request, nodossier, nolig)
+ page_title= "Modification de la ligne %s" % (nolig)
+ # import pdb;pdb.set_trace()
+
+ # -- ajouter une ligne
+ if 'form.submited' in request.params:
+ if type_ligne == 'TX':
+ # ajout d'un TEXTE
+ new_values = {}
+ for param, db_value in ligne.items():
+ if param in request.params and request.params[param] != db_value:
+ new_values[param] = request.params[param]
+
+ new_values['type_ligne'] = type_ligne
+ new_values['usermaj'] = logged_in
+ new_values['societe'] = societe
+ new_values['no_id'] = no_id
+ if nolig == '0':
+ new_values['nolig'] = nb_lignes + 1
+ else:
+ new_values['nolig'] = nolig
+ update_devis_ligne(request, nodossier, nolig, new_values)
+ request.session.flash(u"La ligne de texte a été mis à jour avec succès.", 'success')
+ return HTTPFound(location=request.route_url("devis_web", nodossier=nodossier))
+
+ elif type_ligne == 'AR':
+ # ajout d'un article
+ new_values = {}
+ for param, db_value in ligne.items():
+ if param in request.params and request.params[param] != db_value:
+ new_values[param] = request.params[param]
+
+ new_values['type_ligne'] = type_ligne
+ new_values['usermaj'] = logged_in
+ new_values['societe'] = societe
+ new_values['no_id'] = no_id
+ if nolig == '0':
+ new_values['nolig'] = nb_lignes + 1
+ else:
+ new_values['nolig'] = nolig
+ update_devis_ligne(request, nodossier, nolig, new_values)
+ request.session.flash(u"La ligne de devis a été mis à jour avec succès.", 'success')
+ return HTTPFound(location=request.route_url("devis_web", nodossier=nodossier))
+
+
+ return {
+ 'page_title': page_title,
+ 'url': url,
+ 'message': message,
+ 'nodossier': nodossier,
+ 'nolig': nolig,
+ 'dossier': dossier,
+ 'ligne': ligne,
+ 'type_ligne': type_ligne,
+ }