ajout devis_preview.pt
This commit is contained in:
@@ -58,7 +58,7 @@ class GlobalLayout(object):
|
|||||||
def isWebPage(self):
|
def isWebPage(self):
|
||||||
# test view name
|
# test view name
|
||||||
if self.request.matched_route:
|
if self.request.matched_route:
|
||||||
if self.request.matched_route.name == 'rdf_rapport':
|
if self.request.matched_route.name in ['rdf_rapport', 'devis_preview']:
|
||||||
# oui, page PDF
|
# oui, page PDF
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
@@ -67,3 +67,4 @@ class GlobalLayout(object):
|
|||||||
else:
|
else:
|
||||||
# non, page web
|
# non, page web
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
@@ -144,5 +144,15 @@ def update_devis_ligne(request, nodossier, nolig, new_values):
|
|||||||
new_values['no_id'] = no_id
|
new_values['no_id'] = no_id
|
||||||
new_values['nolig'] = nolig
|
new_values['nolig'] = nolig
|
||||||
query = "UPDATE devis_lignes SET %s WHERE societe = :societe and no_id=:no_id and nolig = :nolig;" % s
|
query = "UPDATE devis_lignes SET %s WHERE societe = :societe and no_id=:no_id and nolig = :nolig;" % s
|
||||||
import pdb;pdb.set_trace()
|
# import pdb;pdb.set_trace()
|
||||||
execute_query(request, query, new_values)
|
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})
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ def includeme(config):
|
|||||||
config.add_route('devis_create', '/devis_create/{nodossier}')
|
config.add_route('devis_create', '/devis_create/{nodossier}')
|
||||||
config.add_route('devis_web', '/devis_web/{nodossier}')
|
config.add_route('devis_web', '/devis_web/{nodossier}')
|
||||||
config.add_route('devis_view', '/devis_view/{nodossier}')
|
config.add_route('devis_view', '/devis_view/{nodossier}')
|
||||||
|
config.add_route('devis_preview', '/devis_preview/{nodossier}')
|
||||||
# dossier
|
# dossier
|
||||||
config.add_route('demandes','/demandes')
|
config.add_route('demandes','/demandes')
|
||||||
config.add_route('delete_img','/delete_img/{nodossier}/{norapport}/{nosection}/{nomfic}')
|
config.add_route('delete_img','/delete_img/{nodossier}/{norapport}/{nosection}/{nomfic}')
|
||||||
|
|||||||
BIN
mondumas/static/img/Logo-CD.jpg
Normal file
BIN
mondumas/static/img/Logo-CD.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
BIN
mondumas/static/img/Logo-ME.jpg
Normal file
BIN
mondumas/static/img/Logo-ME.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
BIN
mondumas/static/img/Logo-PE.jpg
Normal file
BIN
mondumas/static/img/Logo-PE.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
BIN
mondumas/static/img/Logo-PO.jpg
Normal file
BIN
mondumas/static/img/Logo-PO.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -10,7 +10,7 @@
|
|||||||
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
||||||
|
|
||||||
<!-- *** TEXTE *** -->
|
<!-- *** TEXTE *** -->
|
||||||
<div tal:condition="type_ligne=='TX'">
|
<div id="TX" tal:condition="type_ligne=='TX'">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-2">Type de texte</label>
|
<label class="control-label col-sm-2">Type de texte</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
@@ -24,44 +24,55 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-2">Texte</label>
|
<label class="control-label col-sm-2">Texte</label>
|
||||||
<div class="col-xs-6">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" id="libelle" name="libelle" value="${ligne.libelle}">
|
<input class="form-control" type="text" id="libelle" name="libelle" value="${ligne.libelle}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- *** ARTICLE *** -->
|
<!-- *** ARTICLE *** -->
|
||||||
<div tal:condition="type_ligne=='AR'">
|
<div id="AR" tal:condition="type_ligne=='AR'">
|
||||||
<div class="form-group">
|
|
||||||
<label class="control-label col-sm-2">Article</label>
|
|
||||||
<div class="col-xs-6">
|
|
||||||
<input class="form-control" type="text" id="article" name="article" value="${article}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-2">Référence</label>
|
<label class="control-label col-sm-2">Référence</label>
|
||||||
<div class="col-xs-6">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" id="ref" name="ref" value="${ligne.ref}" readonly>
|
<input class="form-control" type="text" id="ref" name="ref" value="${ligne.ref}" >
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-2">Libellé</label>
|
<label class="control-label col-sm-2">Libellé</label>
|
||||||
<div class="col-xs-6">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" id="libelle" name="libelle" value="${ligne.libelle}">
|
<input class="form-control" type="text" id="libelle" name="libelle" value="${ligne.libelle}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-2">Quantité</label>
|
<label class="control-label col-sm-2">Quantité</label>
|
||||||
<div class="col-xs-6">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" id="qte" name="qte" value="${ligne.qte}">
|
<input class="form-control" type="text" id="qte" name="qte" value="${ligne.qte}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-2">Prix HT</label>
|
<label class="control-label col-sm-2">Prix HT</label>
|
||||||
<div class="col-xs-6">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" id="prixht" name="prixht" value="${ligne.prixht}">
|
<div class="input-group">
|
||||||
</div>
|
<span class="input-group-addon add-on">
|
||||||
|
<span class="glyphicon glyphicon-euro"></span>
|
||||||
|
</span>
|
||||||
|
<input class="form-control" type="text" id="prixht" name="prixht" value="${ligne.prixht}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2" for="metrage">Métrage</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="form-control monospace-font" type="text" id="metrage" name="metrage" value="${ligne.metrage}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2" for="deduction">déduction</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="form-control monospace-font" type="text" id="deduction" name="deduction" value="${ligne.deduction}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- *** SOUS-TOTAL *** -->
|
<!-- *** SOUS-TOTAL *** -->
|
||||||
<div tal:condition="type_ligne=='ST'">
|
<div tal:condition="type_ligne=='ST'">
|
||||||
@@ -133,6 +144,8 @@ $(document).ready(function() {
|
|||||||
$("#"+cas).show();
|
$("#"+cas).show();
|
||||||
});
|
});
|
||||||
$('#libelle').autocomplete({
|
$('#libelle').autocomplete({
|
||||||
|
minLength: 3,
|
||||||
|
appendTo: "#TX",
|
||||||
source: function (request, response) {
|
source: function (request, response) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url:'/ajax_texte',
|
url:'/ajax_texte',
|
||||||
@@ -145,12 +158,10 @@ $(document).ready(function() {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
minLength: 3,
|
|
||||||
appendTo: "#TX"
|
|
||||||
});
|
});
|
||||||
$('#article').autocomplete({
|
$('#ref').autocomplete({
|
||||||
minLength: 3,
|
minLength: 3,
|
||||||
appendTo: "#TX",
|
appendTo: "#AR",
|
||||||
source: function (request, response) {
|
source: function (request, response) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url:'/ajax_texte',
|
url:'/ajax_texte',
|
||||||
@@ -164,7 +175,7 @@ $(document).ready(function() {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
select: function(event, ui) {
|
select: function(event, ui) {
|
||||||
var ref = ui.item.value.split(' ')[0]; // selected ref
|
var ref = ui.item.value.split(" ")[0]; // selected ref
|
||||||
|
|
||||||
// lecture de l'article
|
// lecture de l'article
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@@ -180,7 +191,6 @@ $(document).ready(function() {
|
|||||||
var prixht = response[0]['prixht'];
|
var prixht = response[0]['prixht'];
|
||||||
|
|
||||||
// Set value to textboxes
|
// Set value to textboxes
|
||||||
document.getElementById('article').value = ref;
|
|
||||||
document.getElementById('ref').value = ref;
|
document.getElementById('ref').value = ref;
|
||||||
document.getElementById('libelle').value = libelle;
|
document.getElementById('libelle').value = libelle;
|
||||||
document.getElementById('prixht').value = prixht;
|
document.getElementById('prixht').value = prixht;
|
||||||
|
|||||||
108
mondumas/templates/devis/devis_preview.pt
Normal file
108
mondumas/templates/devis/devis_preview.pt
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<metal:block use-macro="main_template">
|
||||||
|
<div metal:fill-slot="content">
|
||||||
|
<!-- ENTETE -->
|
||||||
|
<img src="${logo_url}" width="100%" />
|
||||||
|
<br />
|
||||||
|
<div class="row">
|
||||||
|
<!-- colonne gauche : REFERENCES -->
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<p tal:condition="dossier.no_agrement">N° Agrément : ${dossier.no_agrement}</p>
|
||||||
|
<br/><br/>
|
||||||
|
<p tal:condition="dossier.NOSIN">N° sinistre : ${dossier.NOSIN}</p>
|
||||||
|
<p tal:condition="dossier.NOPOL">N° sinistre : ${dossier.NOPOL}</p>
|
||||||
|
<p tal:condition="dossier.REF_EXPERT">Réf. expert : ${dossier.REF_EXPERT}</p>
|
||||||
|
<p tal:condition="dossier.VREF">V/Référence : ${dossier.VREF}</p>
|
||||||
|
<br />
|
||||||
|
<p>${dossier.LIBCOMPL}</p>
|
||||||
|
<br/><br/>
|
||||||
|
<p>N° dossier : ${dossier.nochantier}</p>
|
||||||
|
<br/><br/>
|
||||||
|
<H3>DEVIS N° ${dossier.societe}-${dossier.NO_ID}<h/H3>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- colonne droite : ADRESSES -->
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<br/><br/>
|
||||||
|
<h4>${dossier.C_QUALITE} ${dossier.C_NOM}</h4>
|
||||||
|
<h4>${dossier.C_ADR}</h4>
|
||||||
|
<h4 tal:condition="dossier.C_ADR2">${dossier.C_ADR2}<br /></h4>
|
||||||
|
<br />
|
||||||
|
<h4>${dossier.C_CP} ${dossier.C_VILLE}</h4>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<p>Rilieux-la-Pape, le ${dossier.DATE.strftime('%d-%m-%Y')}</p>
|
||||||
|
<br />
|
||||||
|
<h4>${dossier.QUALITE} ${dossier.NOM}</h4>
|
||||||
|
<h4>${dossier.ADRESSE}</h4>
|
||||||
|
<h4 tal:condition="dossier.ADRESSE2">${dossier.ADRESSE2}<br /></h4>
|
||||||
|
<br />
|
||||||
|
<h4>${dossier.CP} ${dossier.VILLE}</h4>
|
||||||
|
</div>
|
||||||
|
</div> <!-- row : entête-->
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<p class="text-right">Surface</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<p class="text-right">P.U. HT</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<p class="text-right">Montant HT</p>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
</div> <!-- row : entête tableau-->
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<br />
|
||||||
|
<div class="row">
|
||||||
|
<hr>
|
||||||
|
<div class="col-sm-7">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<h4>Total HT</h4>
|
||||||
|
<h4>TVA ${layout.to_percent(dossier.TAUXTVA)}</h4>
|
||||||
|
<h4>Total TTC</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<h4 class="text-right">${layout.to_euro(dossier.TOTALHT)}</h4>
|
||||||
|
<h4 class="text-right">${layout.to_euro(dossier.TOTALTVA)}</h4>
|
||||||
|
<h4 class="text-right">${layout.to_euro(dossier.TOTALTTC)}</h4>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<p>
|
||||||
|
Si vous acceptez ce devis, veuillez nous en retourner un exemplaire signé et précédé de la mention "Bon pour Accord".
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div> <!-- row : bas de devis-->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<p tal:condition="dossier.TYPECLI == 'P'">
|
||||||
|
<b>Conditions de réglement :</b><br />
|
||||||
|
Acompte de 30 % à la commande, Le solde à réception de la facture.
|
||||||
|
</p>
|
||||||
|
<p tal:condition="dossier.CODETVA == 4">
|
||||||
|
NOTA : Pour bénéficier du taux réduit de T.V.A. à 7%, vous devez nous fournir en même temps que l'acceptation du devis, une attestation sur papier libre, stipulant que votre habitation est construite depuis plus de deux ans.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-1">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-5">
|
||||||
|
<p>
|
||||||
|
Le <br/>
|
||||||
|
Nom et Signature du Client<br/>
|
||||||
|
BON POUR ACCORD
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div> <!-- row : bon pour accord-->
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div metal:fill-slot="additional_scripts">
|
||||||
|
</div>
|
||||||
|
</metal:block>
|
||||||
@@ -51,6 +51,11 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a class="btn btn-success" role="button" href="${request.route_url('devis_preview', nodossier=nodossier)}">
|
||||||
|
<span class="glyphicon glyphicon-plus"></span> Prévisualiser</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
<table class="table table-bordered table-condensed">
|
<table class="table table-bordered table-condensed">
|
||||||
<tr class="well">
|
<tr class="well">
|
||||||
<th>Réf</th>
|
<th>Réf</th>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<!-- ENTETE -->
|
<!-- ENTETE -->
|
||||||
<div tal:condition="pt_name=='rdf_rapport'">
|
<div tal:condition="pt_name=='rdf_rapport'">
|
||||||
<!-- LOGO -->
|
<!-- LOGO -->
|
||||||
<img src="${request.static_url('mondumas:static/img/LogoVerSanit.jpg')}" width="100%" />
|
<img src="${request.static_url('mondumas:static/img/Logo-PL.jpg')}" width="100%" />
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<h1 class="text-center">Rapport de recherche de fuite</h1>
|
<h1 class="text-center">Rapport de recherche de fuite</h1>
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ def to_euroz(x):
|
|||||||
if x == 0:
|
if x == 0:
|
||||||
return ""
|
return ""
|
||||||
else:
|
else:
|
||||||
return ("%.2f €" % x).replace('.', ',')
|
return ("%9.2f €" % x).replace('.', ',')
|
||||||
|
|
||||||
def to_decz(x):
|
def to_decz(x):
|
||||||
"""Takes a decimal and returns a string"""
|
"""Takes a decimal and returns a string"""
|
||||||
@@ -326,7 +326,10 @@ def ajax_texte(request):
|
|||||||
|
|
||||||
liste=[]
|
liste=[]
|
||||||
for row in items:
|
for row in items:
|
||||||
d = '%s | %s | %s' % (row.ref_cli2, row.LIBART, to_euro(row.PRIXHT2))
|
if type == 'AR':
|
||||||
|
d = '%s | %s | %s' % (row.ref_cli2, row.LIBART, to_euro(row.PRIXHT2))
|
||||||
|
else:
|
||||||
|
d = row.LIBART
|
||||||
liste.append(d)
|
liste.append(d)
|
||||||
|
|
||||||
return Response(json.dumps(liste))
|
return Response(json.dumps(liste))
|
||||||
@@ -335,9 +338,9 @@ def ajax_texte(request):
|
|||||||
def ajax_article(request):
|
def ajax_article(request):
|
||||||
ref = request.GET['ref']
|
ref = request.GET['ref']
|
||||||
|
|
||||||
# lire les articles commencant par
|
# lire l'article
|
||||||
items = get_article(request, 'REF', ref)
|
items = get_article(request, 'REF', ref)
|
||||||
|
# puis retourne son libellé et son prixht
|
||||||
liste=[]
|
liste=[]
|
||||||
d = {}
|
d = {}
|
||||||
d['ref'] = items.ref_cli2
|
d['ref'] = items.ref_cli2
|
||||||
|
|||||||
@@ -167,6 +167,8 @@ def devis_ligne(request):
|
|||||||
ligne['ref'] = ''
|
ligne['ref'] = ''
|
||||||
if type_ligne == 'AR':
|
if type_ligne == 'AR':
|
||||||
ligne['qte'] = 1
|
ligne['qte'] = 1
|
||||||
|
ligne['metrage'] = ''
|
||||||
|
ligne['deduction'] = ''
|
||||||
else:
|
else:
|
||||||
ligne['qte'] = 0
|
ligne['qte'] = 0
|
||||||
ligne['prixht'] = 0
|
ligne['prixht'] = 0
|
||||||
@@ -178,7 +180,6 @@ def devis_ligne(request):
|
|||||||
# lire la ligne du devis
|
# lire la ligne du devis
|
||||||
ligne = get_devis_lignes_by_no(request, nodossier, nolig)
|
ligne = get_devis_lignes_by_no(request, nodossier, nolig)
|
||||||
page_title= "Modification de la ligne %s" % (nolig)
|
page_title= "Modification de la ligne %s" % (nolig)
|
||||||
article = '%s | %s | %s' % (ligne.ref, ligne.libelle, to_euro(ligne.prixht))
|
|
||||||
# import pdb;pdb.set_trace()
|
# import pdb;pdb.set_trace()
|
||||||
|
|
||||||
# -- ajouter une ligne
|
# -- ajouter une ligne
|
||||||
@@ -199,7 +200,7 @@ def devis_ligne(request):
|
|||||||
else:
|
else:
|
||||||
new_values['nolig'] = nolig
|
new_values['nolig'] = nolig
|
||||||
update_devis_ligne(request, nodossier, nolig, new_values)
|
update_devis_ligne(request, nodossier, nolig, new_values)
|
||||||
request.session.flash(u"La ligne de texte a été mis à jour avec succès.", 'success')
|
request.session.flash("La ligne de texte a été mis à jour avec succès.", 'success')
|
||||||
return HTTPFound(location=request.route_url("devis_web", nodossier=nodossier))
|
return HTTPFound(location=request.route_url("devis_web", nodossier=nodossier))
|
||||||
|
|
||||||
elif type_ligne == 'AR':
|
elif type_ligne == 'AR':
|
||||||
@@ -209,6 +210,24 @@ def devis_ligne(request):
|
|||||||
if param in request.params and request.params[param] != db_value:
|
if param in request.params and request.params[param] != db_value:
|
||||||
new_values[param] = request.params[param]
|
new_values[param] = request.params[param]
|
||||||
|
|
||||||
|
# calcul métrage
|
||||||
|
metrage = 0
|
||||||
|
try:
|
||||||
|
metrage = eval(request.params['metrage'])
|
||||||
|
except SyntaxError:
|
||||||
|
request.session.flash("Erreur de syntaxe dans la formule de calcul", 'danger')
|
||||||
|
return HTTPFound(location=url)
|
||||||
|
deduc = 0
|
||||||
|
try:
|
||||||
|
deduc = eval(request.params['deduction'])
|
||||||
|
except SyntaxError:
|
||||||
|
request.session.flash("Erreur de syntaxe dans la formule de calcul", 'danger')
|
||||||
|
return HTTPFound(location=url)
|
||||||
|
if deduc < 0 :
|
||||||
|
metrage += deduc
|
||||||
|
else:
|
||||||
|
metrage -= deduc
|
||||||
|
new_values['qte'] = metrage
|
||||||
new_values['type_ligne'] = type_ligne
|
new_values['type_ligne'] = type_ligne
|
||||||
new_values['usermaj'] = logged_in
|
new_values['usermaj'] = logged_in
|
||||||
new_values['societe'] = societe
|
new_values['societe'] = societe
|
||||||
@@ -230,6 +249,37 @@ def devis_ligne(request):
|
|||||||
'nolig': nolig,
|
'nolig': nolig,
|
||||||
'dossier': dossier,
|
'dossier': dossier,
|
||||||
'ligne': ligne,
|
'ligne': ligne,
|
||||||
'article': article,
|
'type_ligne': type_ligne,
|
||||||
'type_ligne': type_ligne,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@view_config(route_name='devis_preview', renderer='../templates/devis/devis_preview.pt', permission='view')
|
||||||
|
def devis_preview(request):
|
||||||
|
nodossier = request.matchdict['nodossier']
|
||||||
|
societe = nodossier[0:2]
|
||||||
|
no_id = nodossier[5:]
|
||||||
|
url = request.route_url("devis_preview", nodossier=nodossier)
|
||||||
|
logged_in = request.authenticated_userid.upper()
|
||||||
|
|
||||||
|
# calculer les totaux HT et TTC
|
||||||
|
sum_devis_totaux(request, nodossier)
|
||||||
|
|
||||||
|
dossier = get_devis_by_no(request, nodossier)
|
||||||
|
# import pdb;pdb.set_trace()
|
||||||
|
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_lignes_by_no(request, nodossier, '0')
|
||||||
|
# select logo according to society
|
||||||
|
logo_url = request.static_url('mondumas:static/img/Logo-%s.jpg' % societe)
|
||||||
|
|
||||||
|
return {
|
||||||
|
'page_title': '',
|
||||||
|
'url': url,
|
||||||
|
'logo_url': logo_url,
|
||||||
|
'nodossier': nodossier,
|
||||||
|
'dossier': dossier,
|
||||||
|
'details': details,
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user