envio de correos por timbres cliente
This commit is contained in:
@@ -101,13 +101,14 @@ ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True
|
||||
|
||||
EMAIL_TIMEOUT = 5
|
||||
#EMAIL_USE_TLS = True
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_HOST = 'secure.emailsrvr.com'
|
||||
EMAIL_PORT = 465
|
||||
EMAIL_HOST_USER = DEFAULT_FROM_EMAIL = 'noreply@aduanasoft.com.mx'
|
||||
EMAIL_HOST_USER = 'noreply@aduanasoft.com.mx'
|
||||
EMAIL_HOST_PASSWORD = 'N036p7y!'
|
||||
EMAIL_SUBJECT_PREFIX = 'AS Timbres'
|
||||
EMAIL_USE_SSL=True
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
from django.urls import path,include
|
||||
from .views import index,add_timbre, timbres_cliente,saldo_funct,ClientesUpdateView, export_Excel
|
||||
from .views import (
|
||||
index,add_timbre,
|
||||
timbres_cliente,
|
||||
saldo_funct,
|
||||
ClientesUpdateView,
|
||||
export_Excel,
|
||||
send_timbres_Email,
|
||||
)
|
||||
|
||||
urlpatterns = [
|
||||
path('', index, name='index'),
|
||||
@@ -7,7 +14,7 @@ urlpatterns = [
|
||||
path('timbres_cliente/<str:RFC>/', timbres_cliente, name='timbres_cliente'),
|
||||
path('get_saldo/', saldo_funct, name='saldo_funct'),
|
||||
path('cliente/update/<int:pk>/',ClientesUpdateView.as_view(),name='update_cliente'),
|
||||
|
||||
path('get_timbres_xls/', export_Excel, name='export_Excel'),
|
||||
path('send_timbres_cliente/',send_timbres_Email, name='send_timbres_Email'),
|
||||
|
||||
]
|
||||
@@ -17,10 +17,55 @@ from asgiref.sync import sync_to_async
|
||||
from openpyxl import Workbook
|
||||
from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
|
||||
import json
|
||||
|
||||
#email
|
||||
from django.core.mail import EmailMessage
|
||||
from django.conf import settings
|
||||
|
||||
import requests
|
||||
import os
|
||||
import re
|
||||
from io import BytesIO
|
||||
@login_required
|
||||
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
|
||||
def index(request):
|
||||
|
||||
|
||||
clientes_list = Clientes.objects.all()
|
||||
mes = request.GET.get('mes', None)
|
||||
page = request.GET.get('page', 1)
|
||||
@@ -37,17 +82,20 @@ def index(request):
|
||||
for i,ii in enumerate(clientes_list):
|
||||
ii.timbres_X_MES(mes=mes)
|
||||
|
||||
paginator = Paginator(clientes_list, 5)
|
||||
|
||||
try:
|
||||
lista = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
lista = paginator.page(1)
|
||||
except EmptyPage:
|
||||
lista = paginator.page(paginator.num_pages)
|
||||
clientes_list =pageFunc(page,clientes_list,20)
|
||||
|
||||
# paginator = Paginator(clientes_list, 5)
|
||||
|
||||
# try:
|
||||
# lista = paginator.page(page)
|
||||
# except PageNotAnInteger:
|
||||
# lista = paginator.page(1)
|
||||
# except EmptyPage:
|
||||
# lista = paginator.page(paginator.num_pages)
|
||||
filters.pop('mes','')
|
||||
context = {
|
||||
'lista':lista,
|
||||
'lista':clientes_list,
|
||||
'mes':mes,
|
||||
'filters':filters
|
||||
|
||||
@@ -119,8 +167,7 @@ def timbres_cliente(request, RFC):
|
||||
inicio = [int(i) for i in datepicker.split("/")]
|
||||
fin = [int(i) for i in datepickerFin.split("/")]
|
||||
#print('inicio',inicio,' fin',fin)
|
||||
#inicio.sort(reverse=True)
|
||||
#fin.sort(reverse=True)
|
||||
|
||||
start = datetime.datetime(inicio[2],inicio[0],inicio[1])
|
||||
start += datetime.timedelta(days=0)
|
||||
end = datetime.datetime(fin[2],fin[0],fin[1])
|
||||
@@ -131,7 +178,7 @@ def timbres_cliente(request, RFC):
|
||||
lista = lista.filter(created_at__range=[start, end])
|
||||
|
||||
conteo = lista.count()
|
||||
print('conteo',conteo)
|
||||
|
||||
if conteo !=0 :
|
||||
perPage = conteo // 2
|
||||
else:
|
||||
@@ -175,7 +222,7 @@ def export_Excel(request):
|
||||
|
||||
RFC = request.GET.get('RFC', None)
|
||||
mes = request.GET.get('mes',None)
|
||||
|
||||
print('AQUIIIIIIIIIIIIIIII')
|
||||
today = datetime.date.today()
|
||||
month = today.month
|
||||
year = today.year
|
||||
@@ -195,7 +242,6 @@ def export_Excel(request):
|
||||
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])
|
||||
#objeto_a_trabajar = Timbres.objects.filter(rfcc=RFC, created_at__year=str(year),created_at__month=str(month))
|
||||
else:
|
||||
objeto_a_trabajar = Clientes.objects.all()
|
||||
for i,ii in enumerate(objeto_a_trabajar):
|
||||
|
||||
@@ -87,6 +87,9 @@ Timbres disponibles Comercio Digital: {{saldo.saldo}}
|
||||
<td>
|
||||
<button class="btn btn-outline-info" id ="id_b_{{obj.RFC}}" onclick="aclick(event, '{{obj.RFC}}','{{obj.conteo_mes}}')">Excel</button>
|
||||
<a style="display: none;" id="id_a_{{obj.RFC}}" target="_blank" rel="noopener noreferrer" href="{% url 'export_Excel' %}?RFC={{obj.RFC}}&mes={{mes}}">Excel</a>
|
||||
|
||||
<a href="{% url 'send_timbres_Email' %}?RFC={{obj.RFC}}&mes={{mes}}" >Email Timbres</a>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
@@ -127,7 +130,7 @@ Timbres disponibles Comercio Digital: {{saldo.saldo}}
|
||||
})
|
||||
|
||||
document.getElementById('table_select').addEventListener('change',(event)=>{
|
||||
spinner_id.setAttribute('style','display:block;')
|
||||
spinner_id.setAttribute('style','display:inline;')
|
||||
let anc = document.getElementById('home_id')
|
||||
anc.href=''
|
||||
let url = `?mes=${event.target.value}${filters}`
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<h1>Timbres <strong>{{RFC}}</strong> </h1>
|
||||
<h2>Timbres totales: <strong></strong>{{conteo}}</strong></h2>
|
||||
<span class="navbar-text mr-2">
|
||||
{% if filters.datepicker%}
|
||||
{% if filters.datepicker%}
|
||||
De fecha: <strong>"{{filters.datepicker}}"</strong>
|
||||
{% endif %}
|
||||
|
||||
|
||||
0
['Timbres_RORF911228LN5_12_AÑO_2022.xlsx']
Normal file
0
['Timbres_RORF911228LN5_12_AÑO_2022.xlsx']
Normal file
Reference in New Issue
Block a user