added tarifs_import with xlrd
This commit is contained in:
@@ -15,7 +15,6 @@ from pyramid_mailer.message import Message, Attachment
|
||||
from datetime import *
|
||||
from dateutil.relativedelta import *
|
||||
from docutils.core import publish_parts
|
||||
import hashlib
|
||||
|
||||
from sqlalchemy.exc import DBAPIError
|
||||
from ..security import groupfinder
|
||||
@@ -26,6 +25,7 @@ from ..models.parametres import *
|
||||
from ..models.default import *
|
||||
from ..models.utils import *
|
||||
from ..views.default import *
|
||||
from ..views.dossier import *
|
||||
|
||||
@view_config(route_name='parametres', renderer='../templates/parametres/parametres.pt', permission='manage')
|
||||
def parametres(request):
|
||||
@@ -801,3 +801,167 @@ def societe_edit(request):
|
||||
'code': code,
|
||||
'code_postal': code_postal,
|
||||
'message': message,
|
||||
}
|
||||
|
||||
@view_config(route_name='tarifs', renderer='../templates/parametres/tarifs.pt', permission='manage')
|
||||
def tarifs(request):
|
||||
|
||||
familles = ["Article", "Texte"]
|
||||
famille = 'ARticle'
|
||||
|
||||
# si table a changé
|
||||
if 'famille' in request.params:
|
||||
famille = request.params["famille"]
|
||||
|
||||
# lire les articles
|
||||
items = get_articles_byFam(request, famille[0])
|
||||
|
||||
# construire la liste
|
||||
liste=[]
|
||||
for item in items:
|
||||
d = (item.REF, item.LIBART, item.LIBCOMPL1, to_euro(item.PRIXHT1), to_euro(item.PRIXHT2), item.ref_cli1, item.ref_cli2)
|
||||
liste.append(d)
|
||||
|
||||
return {
|
||||
'page_title': 'Liste des articles',
|
||||
'dt_data': json.dumps(liste),
|
||||
'familles': familles,
|
||||
'famille': famille,
|
||||
}
|
||||
|
||||
@view_config(route_name='tarif_edit', renderer='../templates/parametres/tarif_edit.pt', permission='manage')
|
||||
def tarif_edit(request):
|
||||
ref = request.matchdict['ref']
|
||||
url = request.route_url('article_edit', ref=ref)
|
||||
logged_in = request.authenticated_userid
|
||||
message = ''
|
||||
|
||||
familles = ["Article", "Texte"]
|
||||
|
||||
if ref == '0':
|
||||
# nouveau
|
||||
item = {}
|
||||
item['REF'] = '0'
|
||||
item['FAM'] = 'A'
|
||||
item['LIBART'] = ''
|
||||
item['PRIXHT1'] = 0
|
||||
item['PRIXHT2'] = 0
|
||||
item['ref_cli1'] = ''
|
||||
item['ref_cli2'] = ''
|
||||
item['LIBCOMPL1'] = ''
|
||||
item['LIBCOMPL2'] = ''
|
||||
item['LIBCOMPL3'] = ''
|
||||
item['LIBCOMPL4'] = ''
|
||||
page_title= 'Nouvel article'
|
||||
else:
|
||||
# lire l'article
|
||||
item = get_article(request, 'REF', ref)
|
||||
if not item:
|
||||
request.session.flash("article non trouvé : %s" % ref, 'warning')
|
||||
return HTTPFound(location=request.route_url('articles'))
|
||||
page_title= "article : %s - %s" %(item.REF, item.LIBART)
|
||||
|
||||
if 'form.submitted' in request.params:
|
||||
new_ref = request.params["REF"]
|
||||
if new_ref == '0':
|
||||
message = "Veuillez saisir un code article valide."
|
||||
else:
|
||||
new_values = {}
|
||||
for param, db_value in item.items():
|
||||
if param in request.params and request.params[param] != db_value:
|
||||
new_values[param] = request.params[param]
|
||||
|
||||
if new_values:
|
||||
update_article(request, ref, new_values)
|
||||
request.session.flash("Le article a été mis à jour avec succès.", 'success')
|
||||
return HTTPFound(location=request.route_url('articles'))
|
||||
|
||||
if 'form.deleted' in request.params:
|
||||
delete_article(request, ref)
|
||||
request.session.flash("Le article a été supprimé avec succès.", 'success')
|
||||
return HTTPFound(location=request.route_url('articles'))
|
||||
|
||||
return {
|
||||
'page_title': page_title,
|
||||
'url': url,
|
||||
'message': message,
|
||||
'item': item,
|
||||
'familles': familles,
|
||||
}
|
||||
|
||||
@view_config(route_name='tarifs_import', renderer='../templates/parametres/tarifs_import.pt', permission='view')
|
||||
def tarifs_import(request):
|
||||
"""
|
||||
UPLOAD d'un tarif en fichier EXCEL
|
||||
|
||||
"""
|
||||
import xlrd
|
||||
|
||||
logged_in = request.authenticated_userid.upper()
|
||||
|
||||
url = request.route_url("tarifs_import")
|
||||
message = ''
|
||||
|
||||
groupes = ['AXA','MAIF']
|
||||
groupe = 'AXA'
|
||||
|
||||
|
||||
if 'form.submitted' in request.params:
|
||||
groupe = request.params["groupe"]
|
||||
|
||||
# récupère le fichier download dans le dossier /tmp
|
||||
input_file = request.POST['filename'].file
|
||||
input_name = request.POST['filename'].filename
|
||||
ext_allowed = ['xls', 'xlsx']
|
||||
temp_file = downloadFile2Temp(input_file, input_name, ext_allowed)
|
||||
if temp_file[:8] == 'ERREUR: ':
|
||||
request.session.flash(temp_file, 'danger')
|
||||
return HTTPFound(location=url)
|
||||
|
||||
# readxl returns a pylightxl database that holds all worksheets and its data
|
||||
book = xlrd.open_workbook(temp_file)
|
||||
|
||||
# lire la 1ère feuille et contôler que c'est fichier AXA
|
||||
sh = book.sheet_by_index(0)
|
||||
ctl_cellA1 = sh.cell_value(rowx=0, colx=0)
|
||||
if ctl_cellA1 != 'PEN_2_MISEEN':
|
||||
request.session.flash(temp_file + " -> Ce fichier ne semble pas être un tarif AXA", 'danger')
|
||||
return HTTPFound(location=url)
|
||||
|
||||
# import pdb;pdb.set_trace()
|
||||
for nsheet in range(book.nsheets):
|
||||
# pour chaque feuille dans le tableau XLS
|
||||
sh = book.sheet_by_index(nsheet)
|
||||
for rx in range(sh.nrows):
|
||||
ref = sh.cell_value(rx, 0).strip()
|
||||
# ligne ayant un ref de tarifs ?
|
||||
if len(ref) >= 12 and len(ref) < 15 and ref[3]=='_':
|
||||
new_values = {}
|
||||
new_values['groupe'] = groupe
|
||||
new_values['ref'] = ref
|
||||
new_values['famille'] = ref[0:3]
|
||||
libelle = sh.cell_value(rx, 1)
|
||||
new_values['libelle'] = libelle.replace(' F+P M²', '').replace(' F+P U', '')
|
||||
new_values['prixht'] = sh.cell_value(rx, 5)
|
||||
# col Unité renseigné ?
|
||||
if len(sh.cell_value(rx, 3)) > 0:
|
||||
unite = sh.cell_value(rx, 3)
|
||||
else:
|
||||
if sh.cell_value(rx, 1).find(' M2'):
|
||||
unite = 'M²'
|
||||
else:
|
||||
unite = 'U'
|
||||
new_values['unite'] = unite
|
||||
|
||||
update_tarif(request, '0', new_values)
|
||||
|
||||
request.session.flash("Le fichier PDF a été importé avec succès.", 'success')
|
||||
return HTTPFound(location=url)
|
||||
|
||||
return {
|
||||
'page_title': 'Importer un fichier Tarifs en Excel',
|
||||
'url': url,
|
||||
'message': message,
|
||||
'groupes': groupes,
|
||||
'groupe': groupe,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user