generar xls for email
This commit is contained in:
@@ -29,40 +29,103 @@ from io import BytesIO
|
|||||||
@login_required
|
@login_required
|
||||||
def send_timbres_Email(request):
|
def send_timbres_Email(request):
|
||||||
RFC = request.GET.get('RFC', None)
|
RFC = request.GET.get('RFC', None)
|
||||||
mes = request.GET.get('mes', None)
|
mes = request.GET.get('mes', None)
|
||||||
|
|
||||||
today = datetime.date.today()
|
today = datetime.date.today()
|
||||||
|
year = today.year
|
||||||
if mes is None or mes =='None':
|
if mes is None or mes =='None':
|
||||||
|
|
||||||
mes = today.month
|
mes = today.month
|
||||||
url = request.build_absolute_uri().split('/')[:-2]
|
|
||||||
url = '/'.join(url)
|
|
||||||
url = os.path.join(url, 'get_timbres_xls')
|
|
||||||
print(f'URL:{url}')
|
|
||||||
|
|
||||||
h = requests.get(f'{url}/?RFC={RFC}&mes={mes}', allow_redirects=True)
|
dat =datetime.datetime(int(year), int(mes),1)
|
||||||
header =h.headers
|
|
||||||
content_dispo = h.headers.get('content-disposition')
|
|
||||||
fname = re.findall('filename = (.+)',content_dispo)
|
|
||||||
fname = fname[0]
|
|
||||||
fname = fname.split('.')[0]
|
|
||||||
fname = f'{fname}.xls'
|
|
||||||
fname = fname.replace('_','')
|
|
||||||
print('fname: ',fname)
|
|
||||||
|
|
||||||
|
if dat.month in(1,3,5,7,8,10,12):
|
||||||
|
findate = dat +datetime.timedelta(days=30)
|
||||||
|
elif dat.month in (4,6,9,11):
|
||||||
|
findate = dat+datetime.timedelta(days=29)
|
||||||
|
else:
|
||||||
|
findate = dat+datetime.timedelta(days=28)
|
||||||
|
findate +=datetime.timedelta(days=1)
|
||||||
|
print(f'dat{dat} findate:{findate}')
|
||||||
|
if mes is not None and RFC is not None:
|
||||||
|
objeto_a_trabajar = Timbres.objects.filter(rfcc=RFC, created_at__range=[dat,findate])
|
||||||
|
else:
|
||||||
|
objeto_a_trabajar = Clientes.objects.all()
|
||||||
|
for i,ii in enumerate(objeto_a_trabajar):
|
||||||
|
ii.timbres_X_MES(mes=mes )
|
||||||
|
|
||||||
|
wb = Workbook()
|
||||||
|
ws = wb.active
|
||||||
|
|
||||||
|
if RFC is not None:
|
||||||
|
#Encabezado
|
||||||
|
ws['A1']='RFC_EXPEDIDO'
|
||||||
|
ws['B1']='UUID'
|
||||||
|
ws['C1']='Fecha'
|
||||||
|
for q,qq in enumerate(objeto_a_trabajar,start=2):
|
||||||
|
ws['A' + str(q)] = qq.rfcc
|
||||||
|
ws['B'+ str(q)] = qq.uuid
|
||||||
|
ws['C'+ str(q)] = qq.fecha
|
||||||
|
else:#cuando no es pro RFC y es para contabilizar los timbres del mes de cada cliente
|
||||||
|
ws['A1']='RFC_EXPEDIDO'
|
||||||
|
ws['B1']='Nombre'
|
||||||
|
ws['C1']='Timbres'
|
||||||
|
for q,qq in enumerate(objeto_a_trabajar,start=2):
|
||||||
|
ws['A' + str(q)] = qq.RFC
|
||||||
|
ws['B'+ str(q)] = qq.Nombre
|
||||||
|
ws['C'+ str(q)] = qq.conteo_mes
|
||||||
|
excel = BytesIO()
|
||||||
|
|
||||||
|
nombre_archivo = f"Timbres_{RFC if RFC is not None else 'Clientes_MES'}_{str(mes)}_AÑO_{str(year)}.xls"
|
||||||
|
wb.save(excel)
|
||||||
Cli = Clientes.objects.get(RFC=RFC)
|
Cli = Clientes.objects.get(RFC=RFC)
|
||||||
subject = f'Timbres del Mes:{mes} RFC:{RFC}'
|
subject = f'Timbres del Mes:{mes} RFC:{RFC}'
|
||||||
message = 'Envio de timbres por AS_Admin'
|
message = 'Envio de timbres por AS_Admin'
|
||||||
email = Cli.email
|
email = Cli.email
|
||||||
|
|
||||||
files = BytesIO(h.content)
|
|
||||||
try:
|
try:
|
||||||
mail = EmailMessage(subject,message,settings.EMAIL_HOST_USER,[email])
|
mail = EmailMessage(subject,message,settings.EMAIL_HOST_USER,[email])
|
||||||
mail.attach(filename='timbres.xls',content=files.getbuffer(),mimetype='application/vnd.ms-excel')
|
mail.attach(filename='Timbres.xls',content=excel.getvalue(),mimetype='application/vnd.ms-excel')
|
||||||
mail.send()
|
mail.send()
|
||||||
print('SE armo')
|
print('SE armo')
|
||||||
except:
|
except:
|
||||||
print('Error ')
|
print('Error ')
|
||||||
return redirect('index')
|
return redirect('index')
|
||||||
|
# def send_timbres_Email(request):
|
||||||
|
# RFC = request.GET.get('RFC', None)
|
||||||
|
# mes = request.GET.get('mes', None)
|
||||||
|
# today = datetime.date.today()
|
||||||
|
|
||||||
|
# if mes is None or mes =='None':
|
||||||
|
# mes = today.month
|
||||||
|
# url = request.build_absolute_uri().split('/')[:-2]
|
||||||
|
# url = '/'.join(url)
|
||||||
|
# url = os.path.join(url, 'get_timbres_xls')
|
||||||
|
# print(f'URL:{url}')
|
||||||
|
|
||||||
|
# h = requests.get(f'{url}/?RFC={RFC}&mes={mes}', allow_redirects=True)
|
||||||
|
# header =h.headers
|
||||||
|
# content_dispo = h.headers.get('content-disposition')
|
||||||
|
# fname = re.findall('filename = (.+)',content_dispo)
|
||||||
|
# fname = fname[0]
|
||||||
|
# fname = fname.split('.')[0]
|
||||||
|
# fname = f'{fname}.xls'
|
||||||
|
# fname = fname.replace('_','')
|
||||||
|
# print('fname: ',fname)
|
||||||
|
|
||||||
|
# Cli = Clientes.objects.get(RFC=RFC)
|
||||||
|
# subject = f'Timbres del Mes:{mes} RFC:{RFC}'
|
||||||
|
# message = 'Envio de timbres por AS_Admin'
|
||||||
|
# email = Cli.email
|
||||||
|
|
||||||
|
# files = BytesIO(h.content)
|
||||||
|
# try:
|
||||||
|
# mail = EmailMessage(subject,message,settings.EMAIL_HOST_USER,[email])
|
||||||
|
# mail.attach(filename='timbres.xls',content=files.getbuffer(),mimetype='application/vnd.ms-excel')
|
||||||
|
# mail.send()
|
||||||
|
# print('SE armo')
|
||||||
|
# except:
|
||||||
|
# print('Error ')
|
||||||
|
# return redirect('index')
|
||||||
@login_required
|
@login_required
|
||||||
def index(request):
|
def index(request):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user