ajout facturer rapport de RDF

This commit is contained in:
2019-04-29 21:20:28 +02:00
parent 0b18da0852
commit fd77619c62
5 changed files with 133 additions and 3 deletions

View File

@@ -204,9 +204,14 @@ def get_rapport_by_no_id(request,no_id):
results = request.dbsession.execute(query, {'no_id': no_id}).first()
return results
def get_articles_by_fam(request, fam):
query = "SELECT * FROM articles WHERE FAM = :fam;"
results = request.dbsession.execute(query, {'fam': fam}).fetchall()
return results
def get_rapport_rdf(request):
# les rapports deRDF
query = "SELECT * FROM dem_rdf;"
# les rapports de RDF encours (non encore facturés)
query = "SELECT * FROM dem_rdf where date_facture IS NULL;"
results = request.dbsession.execute(query, ).fetchall()
return results
@@ -247,3 +252,9 @@ def delete_rapport(request, no_id):
def validate_rapport(request, no_id):
query = "UPDATE dem_rdf SET date_relu=CURRENT_DATE WHERE no_id = :no_id"
execute_query(request, query, {'no_id': no_id})
def insert_facture_rdf(request, societe, nochantier, user, ref, date_rapport):
# créer une facture vierge à partir du dossier
query = "CALL spINS_FACTURE_RDF(:societe, :nochantier, :user, :ref, :date_rapport)"
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'user': user, 'ref': ref, 'date_rapport': date_rapport})

View File

@@ -19,6 +19,7 @@ def includeme(config):
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('rdf_bill','/rdf_bill/{no_id}')
config.add_route('rdf_edit','/rdf_edit/{nodossier}/{date_inter}')
config.add_route('rdf_imgdel','/rdf_imgdel/{nochantier}/{norapport}/{nomfic}')
config.add_route('rdf_list','/rdf_list')

View File

@@ -0,0 +1,78 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<br />
<div class="form-group">
<label class="control-label">N° dossier</label> : ${nodossier}<br />
<label class="control-label">N° rapport</label> : ${norapport}<br />
<label class="control-label">Date d'intervention</label> : ${rapport.date_inter.strftime('%d-%m-%Y')}<br />
<label class="control-label" for="rapport">Compte-rendu :&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="rapport" value="Définitif" disabled="disabled"
tal:attributes="checked rapport.rapport=='Définitif'">Définitif
</label>
<label class="radio-inline">
<input type="radio" name="rapport" value="Provisoire" disabled="disabled"
tal:attributes="checked rapport.rapport=='Provisoire'">Provisoire
</label>
</div>
<br />
<h4 class="text-center text-primary">ADRESSE d'INTERVENTION</h4>
<br />
<table class="table table-condensed ">
<tr>
<td>
<p>
<h4>${rapport.C_QUALITE} ${rapport.C_NOM}</h4>
${rapport.C_ADR}<br />
<span tal:condition="rapport.C_ADR2">${rapport.C_ADR2}<br /></span>
${rapport.C_CP} ${rapport.C_VILLE}<br />
</p>
</td>
<td>
<p>
Assureur : <b>${rapport.NOMCLI}</b><br />
No Sinistre : ${rapport.NOSIN}
<br />
Téléphone : ${rapport.C_TEL1}<br />
Mobile: ${rapport.C_TELP}<br />
</p>
</td>
</tr>
</table>
<br />
<form id="rdv_edit-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">
<div class="form-group">
<label class="control-label col-sm-4" for="article">Sélectionner l'article à facturer</label>
<div class="col-sm-8">
<select class="form-control" name="article">
<div tal:repeat="item articles">
<option value="${item.REF}" tal:attributes="selected article==item.LIBART and 'selected' or None">${item.LIBART} ${item.PRIXHT1} €</option>
</div>
</select>
</div>
</div>
<br />
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<a class="btn btn-default" href="${request.route_url('rdf_view', no_id=rapport.no_id)}">
<span class="glyphicon glyphicon-arrow-left"></span> Retour rapport</a>
<button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-remove"></span> Générer la facture</button>
</div>
</div>
</form>
<br />
<br />
<br />
</div>
<div metal:fill-slot="additional_scripts">
</div>
</metal:block>

View File

@@ -353,6 +353,8 @@
<span class="glyphicon glyphicon-file"></span> Aperçu PDF</a>
<button class="btn btn-warning" type="submit" name="form.generate">
<span class="glyphicon glyphicon-file"></span> Générer PDF</button>
<a class="btn btn-primary" href="/rdf_bill/${rapport.no_id}">
<span class="glyphicon glyphicon-fith-listle"></span> Générer Facture</a>
</div>
</div>
</div>

View File

@@ -658,3 +658,41 @@ def rdf_imgdel(request):
request.session.flash(u"La photo %s a été supprimé avec succès" % (nomfic), 'success')
return HTTPFound(location=request.route_url("upload_img", norapport=norapport))
@view_config(route_name='rdf_bill', renderer='../templates/dossier/rdf_bill.pt', permission='view')
def rdf_bill(request):
logged_in = request.authenticated_userid.upper()
norapport = request.matchdict['no_id']
url = request.route_url('rdf_bill', no_id=norapport)
# lire le rapport
rapport = get_rapport_by_no_id(request, norapport)
nodossier = 'PL-' + str(rapport.nochantier)
if not rapport.date_rapport:
request.session.flash(u"Le rapport n'a été encore généré. Facturation impossible", 'danger')
return HTTPFound(location=request.route_url('rdf_view', no_id=norapport))
# lire tous les articles RDF
articles = get_articles_by_fam(request, 'RDF')
article = 'RDF1'
if 'form.submitted' in request.params:
# lire article à facturer
article = request.params['article']
insert_facture_rdf(request, 'PL', rapport.nochantier, logged_in, article, rapport.date_rapport.strftime('%d-%m-%Y'))
request.session.flash(u"Le rapport a été généré avec succès.", 'success')
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
return {
'page_title': "Générer une facture pour le rapport du %s" % (rapport.date_inter.strftime('%d-%m-%Y')),
'url': url,
'pt_name': 'rdf_view',
'logged_in': logged_in,
'rapport': rapport,
'nodossier': nodossier,
'nochantier': rapport.nochantier,
'norapport': norapport,
'articles': articles,
'article' : article,
}