creation ligne devis article
This commit is contained in:
@@ -113,3 +113,8 @@ def delete_membre(request, cd_uti):
|
|||||||
query = "DELETE FROM p_users WHERE cd_uti = :cd_uti ;"
|
query = "DELETE FROM p_users WHERE cd_uti = :cd_uti ;"
|
||||||
execute_query(request, query, {'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()
|
||||||
|
|
||||||
|
|||||||
@@ -30,13 +30,13 @@ def get_devis_byName(request, societe, name):
|
|||||||
|
|
||||||
if numero > 0:
|
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
|
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:
|
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
|
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:
|
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
|
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()
|
results = request.dbsession.execute(query, {'societe': societe, 'name': name}).fetchall()
|
||||||
return results
|
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()
|
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
||||||
return results
|
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):
|
def insert_devis_from_dossier(request, nodossier, logged_in):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
no_id = nodossier[3:]
|
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()
|
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||||
return results
|
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)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ def includeme(config):
|
|||||||
config.add_route('ajax_client', '/ajax_client')
|
config.add_route('ajax_client', '/ajax_client')
|
||||||
config.add_route('ajax_codepostal', '/ajax_codepostal')
|
config.add_route('ajax_codepostal', '/ajax_codepostal')
|
||||||
config.add_route('ajax_lookup', '/ajax_lookup')
|
config.add_route('ajax_lookup', '/ajax_lookup')
|
||||||
|
config.add_route('ajax_texte', '/ajax_texte')
|
||||||
config.add_route('changer_mdp', '/changer_mdp')
|
config.add_route('changer_mdp', '/changer_mdp')
|
||||||
config.add_route('envoyer_mdp', '/envoyer_mdp')
|
config.add_route('envoyer_mdp', '/envoyer_mdp')
|
||||||
config.add_route('login', '/login')
|
config.add_route('login', '/login')
|
||||||
@@ -18,9 +19,10 @@ def includeme(config):
|
|||||||
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')
|
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')
|
||||||
config.add_route('init_mdp', '/init_mdp/{user}/{lien}')
|
config.add_route('init_mdp', '/init_mdp/{user}/{lien}')
|
||||||
# devis
|
# devis
|
||||||
|
config.add_route('devis_ligne', '/devis_ligne/{type_ligne}/{nodossier}/{nolig}')
|
||||||
config.add_route('devis_list', '/devis_list')
|
config.add_route('devis_list', '/devis_list')
|
||||||
config.add_route('devis_create', '/devis_create/{nodossier}')
|
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}')
|
config.add_route('devis_view', '/devis_view/{nodossier}')
|
||||||
# dossier
|
# dossier
|
||||||
config.add_route('demandes','/demandes')
|
config.add_route('demandes','/demandes')
|
||||||
|
|||||||
@@ -88,6 +88,12 @@
|
|||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
top:7%;
|
top:7%;
|
||||||
}
|
}
|
||||||
|
.type-ligne-panel {
|
||||||
|
padding-left: 25px;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
background-color: #2f2f2f;
|
background-color: #2f2f2f;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<a href="${request.application_url}/devis_list">
|
<a href="${request.application_url}/devis_list">
|
||||||
<span class="glyphicon glyphicon-text-height logo-small"></span>
|
<span class="glyphicon glyphicon-text-height logo-small"></span>
|
||||||
<h4>DEVIS</h4></a>
|
<h4>E-DEVIS</h4></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<a href="${request.application_url}/dossier_lookup">
|
<a href="${request.application_url}/dossier_lookup">
|
||||||
|
|||||||
148
mondumas/templates/devis/devis_ligne.pt
Normal file
148
mondumas/templates/devis/devis_ligne.pt
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
<metal:block use-macro="main_template">
|
||||||
|
<div metal:fill-slot="content">
|
||||||
|
|
||||||
|
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
|
||||||
|
<br />
|
||||||
|
<form id="devis_ligne-form" class="form-horizontal" action="${url}" method="post"
|
||||||
|
data-fv-framework="bootstrap"
|
||||||
|
data-fv-icon-valid="glyphicon glyphicon-ok"
|
||||||
|
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
||||||
|
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
||||||
|
|
||||||
|
<!-- *** TEXTE *** -->
|
||||||
|
<div tal:condition="type_ligne=='TX'">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2">Type de texte</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<label class="radio-inline"><input type="radio" name="ref" value="T1"
|
||||||
|
tal:attributes="checked ligne.ref=='T1'">Titre</label>
|
||||||
|
<label class="radio-inline"><input type="radio" name="ref" value="T2"
|
||||||
|
tal:attributes="checked ligne.ref=='T2'">Sous-titre</label>
|
||||||
|
<label class="radio-inline"><input type="radio" name="ref" value="TX"
|
||||||
|
tal:attributes="checked ligne.ref=='TX'">Texte libre</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2">Texte</label>
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<input class="form-control" type="text" id="libelle" name="libelle" value="${ligne.libelle}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- *** ARTICLE *** -->
|
||||||
|
<div 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="libelle" name="libelle" value="${ligne.libelle}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2">ref</label>
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<input class="form-control" type="text" id="ref" name="ref" value="${ligne.ref}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2">Quantité</label>
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<input class="form-control" type="text" id="qte" name="qte" value="${ligne.qte}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2">Prix HT</label>
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<input class="form-control" type="text" id="prixht" name="prixht" value="${ligne.prixht}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- *** SOUS-TOTAL *** -->
|
||||||
|
<div tal:condition="type_ligne=='ST'">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2">Référence</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<p class="form-control-static">${ligne.ref}</p>
|
||||||
|
</div>
|
||||||
|
<label class="control-label col-sm-2">Libellé</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<p class="form-control-static">${ligne.libelle}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2">Dern. modif le</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<p class="form-control-static">${ligne.datemaj.strftime('%d-%m-%Y %H:%M')} par ${ligne.usermaj}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-offset-3 col-sm-9">
|
||||||
|
<div class="form-group">
|
||||||
|
<a class="btn btn-default" href="${request.route_url('devis_web', nodossier=nodossier)}">
|
||||||
|
<span class="glyphicon glyphicon-arrow-left"></span> Annuler</a>
|
||||||
|
<button class="btn btn-primary" type="submit" name="form.submited">
|
||||||
|
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
||||||
|
<button class="btn btn-danger" type="submit" name="form.deleted" tal:condition="nolig != '0'">
|
||||||
|
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<!-- https://makitweb.com/autocomplete-data-on-multiple-fields-with-jquery-and-ajax/ -->
|
||||||
|
</div>
|
||||||
|
<div metal:fill-slot="additional_scripts">
|
||||||
|
<!-- autocomplete plugin -->
|
||||||
|
<link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet">
|
||||||
|
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
// validate the form
|
||||||
|
$('#devis_ligne-form').formValidation({
|
||||||
|
framework: 'bootstrap',
|
||||||
|
icon: {
|
||||||
|
valid: 'glyphicon glyphicon-ok',
|
||||||
|
invalid: 'glyphicon glyphicon-remove',
|
||||||
|
validating: 'glyphicon glyphicon-refresh'
|
||||||
|
},
|
||||||
|
fields: {
|
||||||
|
type_ligne: {
|
||||||
|
validators: {
|
||||||
|
notEmpty: {
|
||||||
|
message: 'Veuillez sélectionner un type de ligne.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$("input[name=type_ligne]").change(function() {
|
||||||
|
var cas = $(this).val();
|
||||||
|
$(".type-ligne-panel").hide();
|
||||||
|
$("#"+cas).show();
|
||||||
|
});
|
||||||
|
$('#libelle').autocomplete({
|
||||||
|
source: function (request, response) {
|
||||||
|
$.ajax({
|
||||||
|
url:'/ajax_texte',
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
recherche: request.term,
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
response( data );
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
minLength: 3,
|
||||||
|
appendTo: "#TX"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</metal:block>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr tal:repeat="detail devis">
|
<tr tal:repeat="detail devis">
|
||||||
<td>
|
<td>
|
||||||
<a href="/devis_view/${societe}-DE${detail.numero}">${societe}-${detail.numero}</a>
|
<a href="/devis_web/${societe}-DE${detail.numero}">${societe}-${detail.numero}-W</a>
|
||||||
</td>
|
</td>
|
||||||
<td>${detail.date.strftime('%d-%m-%Y')}</td>
|
<td>${detail.date.strftime('%d-%m-%Y')}</td>
|
||||||
<td>${detail.nomcli}</td>
|
<td>${detail.nomcli}</td>
|
||||||
|
|||||||
@@ -61,19 +61,21 @@
|
|||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr tal:repeat="detail details">
|
<tr tal:repeat="detail details">
|
||||||
<td>${detail.REF}</td>
|
<td>${detail.ref}</td>
|
||||||
<td>${detail.LIB}</td>
|
<td><a href="/devis_ligne/${detail.type_ligne}/${nodossier}/${detail.nolig}">${detail.libelle}</a></td>
|
||||||
<td class="text-right">${layout.to_decz(detail.QTE)}</td>
|
<td class="text-right">${layout.to_decz(detail.qte)}</td>
|
||||||
<td class="text-right">${layout.to_euroz(detail.PRIXHT)}</td>
|
<td class="text-right">${layout.to_euroz(detail.prixht)}</td>
|
||||||
<td class="text-right">${layout.to_euroz(detail.MTHT)}</td>
|
<td class="text-right">${layout.to_euroz(detail.mtht)}</td>
|
||||||
<td class="text-center">${detail.USERMAJ}</td>
|
<td class="text-center">${detail.usermaj}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<p>
|
<p>
|
||||||
<a class="btn btn-success" role="button" href="${request.route_url('devis_create', nodossier=nodossier)}"
|
<a class="btn btn-success" role="button" href="#"
|
||||||
data-toggle="modal" data-target="#confirmCreate"><span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a>
|
data-toggle="modal" data-target="#confirmCreate"><span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
<!-- Modal : Confirmation CREATION -->
|
<!-- Modal : Confirmation CREATION -->
|
||||||
<div class="modal fade" id="confirmCreate" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
<div class="modal fade" id="confirmCreate" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
@@ -87,7 +89,7 @@
|
|||||||
<form id="add_justif-form" class="form-horizontal" action="${url}" method="post"
|
<form id="add_justif-form" class="form-horizontal" action="${url}" method="post"
|
||||||
data-fv-framework="bootstrap"
|
data-fv-framework="bootstrap"
|
||||||
data-fv-icon-valid="glyphicon glyphicon-ok"
|
data-fv-icon-valid="glyphicon glyphicon-ok"
|
||||||
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
||||||
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -95,13 +97,12 @@
|
|||||||
<div class="col-xs-8">
|
<div class="col-xs-8">
|
||||||
<label class="radio"><input type="radio" name="type_lig" value="TX" checked>Titre, sous-titre, ligne detexte</label>
|
<label class="radio"><input type="radio" name="type_lig" value="TX" checked>Titre, sous-titre, ligne detexte</label>
|
||||||
<label class="radio"><input type="radio" name="type_lig" value="AR">Article</label>
|
<label class="radio"><input type="radio" name="type_lig" value="AR">Article</label>
|
||||||
<label class="radio"><input type="radio" name="type_lig" value="CA">Calcul</label>
|
|
||||||
<label class="radio"><input type="radio" name="type_lig" value="ST">Sous-total</label>
|
<label class="radio"><input type="radio" name="type_lig" value="ST">Sous-total</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-xs-5 col-xs-offset-3">
|
<div class="col-xs-5 col-xs-offset-3">
|
||||||
<button type="submit" class="btn btn-danger" name="form.added">Ajouter</button>
|
<button type="submit" class="btn btn-success" name="form.submited">Ajouter</button>
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -110,8 +111,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</metal:block>
|
</metal:block>
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
<a href="/devis_view/${detail.nodossier}">${detail.nodossier}</a>
|
<a href="/devis_view/${detail.nodossier}">${detail.nodossier}</a>
|
||||||
</td>
|
</td>
|
||||||
<td tal:condition="detail.web=='W'">
|
<td tal:condition="detail.web=='W'">
|
||||||
<a href="/devis_lignes/${detail.nodossier}">${detail.nodossier}-${detail.web}</a>
|
<a href="/devis_web/${detail.nodossier}">${detail.nodossier}-${detail.web}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>${detail.date.strftime('%d-%m-%Y')}</td>
|
<td>${detail.date.strftime('%d-%m-%Y')}</td>
|
||||||
<td>${detail.nomcli}</td>
|
<td>${detail.nomcli}</td>
|
||||||
|
|||||||
@@ -314,4 +314,19 @@ def ajax_client(request):
|
|||||||
|
|
||||||
return Response(json.dumps(liste))
|
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))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -95,25 +95,42 @@ def devis_view(request):
|
|||||||
'bg_color': bg_color,
|
'bg_color': bg_color,
|
||||||
}
|
}
|
||||||
|
|
||||||
@view_config(route_name='devis_lignes', renderer='../templates/devis/devis_lignes.pt', permission='view')
|
@view_config(route_name='devis_web', renderer='../templates/devis/devis_web.pt', permission='view')
|
||||||
def devis_lignes(request):
|
def devis_web(request):
|
||||||
nodossier = request.matchdict['nodossier']
|
nodossier = request.matchdict['nodossier']
|
||||||
societe = nodossier[0:2]
|
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)
|
dossier = get_devis_by_no(request, nodossier)
|
||||||
if dossier is None:
|
if dossier is None:
|
||||||
request.session.flash(u"Le document no %s est introuvable" % (nodossier), 'danger')
|
request.session.flash(u"Le document no %s est introuvable" % (nodossier), 'danger')
|
||||||
return HTTPFound(location=request.route_url("dossier_lookup"))
|
return HTTPFound(location=request.route_url("dossier_lookup"))
|
||||||
|
|
||||||
# lire tous les lignes du devis
|
# 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
|
# select background color according to society
|
||||||
bg_color = "bg-%s" % societe
|
bg_color = "bg-%s" % societe
|
||||||
|
|
||||||
# -- ajouter une ligne
|
# -- ajouter une ligne
|
||||||
if 'form.added' in request.params:
|
if 'form.submited' in request.params:
|
||||||
type_lig = request.params['type_lig']
|
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 {
|
return {
|
||||||
'page_title': "Devis no : %s W" % (nodossier),
|
'page_title': "Devis no : %s W" % (nodossier),
|
||||||
@@ -123,3 +140,91 @@ def devis_lignes(request):
|
|||||||
'details': details,
|
'details': details,
|
||||||
'bg_color': bg_color,
|
'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,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user