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_TIMEOUT = 5
|
||||||
#EMAIL_USE_TLS = True
|
#EMAIL_USE_TLS = True
|
||||||
|
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||||
EMAIL_HOST = 'secure.emailsrvr.com'
|
EMAIL_HOST = 'secure.emailsrvr.com'
|
||||||
EMAIL_PORT = 465
|
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_HOST_PASSWORD = 'N036p7y!'
|
||||||
EMAIL_SUBJECT_PREFIX = 'AS Timbres'
|
EMAIL_SUBJECT_PREFIX = 'AS Timbres'
|
||||||
EMAIL_USE_SSL=True
|
EMAIL_USE_SSL=True
|
||||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
|
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
from django.urls import path,include
|
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 = [
|
urlpatterns = [
|
||||||
path('', index, name='index'),
|
path('', index, name='index'),
|
||||||
@@ -7,7 +14,7 @@ urlpatterns = [
|
|||||||
path('timbres_cliente/<str:RFC>/', timbres_cliente, name='timbres_cliente'),
|
path('timbres_cliente/<str:RFC>/', timbres_cliente, name='timbres_cliente'),
|
||||||
path('get_saldo/', saldo_funct, name='saldo_funct'),
|
path('get_saldo/', saldo_funct, name='saldo_funct'),
|
||||||
path('cliente/update/<int:pk>/',ClientesUpdateView.as_view(),name='update_cliente'),
|
path('cliente/update/<int:pk>/',ClientesUpdateView.as_view(),name='update_cliente'),
|
||||||
|
|
||||||
path('get_timbres_xls/', export_Excel, name='export_Excel'),
|
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 import Workbook
|
||||||
from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
|
from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
|
||||||
import json
|
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
|
@login_required
|
||||||
def index(request):
|
def index(request):
|
||||||
|
|
||||||
|
|
||||||
clientes_list = Clientes.objects.all()
|
clientes_list = Clientes.objects.all()
|
||||||
mes = request.GET.get('mes', None)
|
mes = request.GET.get('mes', None)
|
||||||
page = request.GET.get('page', 1)
|
page = request.GET.get('page', 1)
|
||||||
@@ -37,17 +82,20 @@ def index(request):
|
|||||||
for i,ii in enumerate(clientes_list):
|
for i,ii in enumerate(clientes_list):
|
||||||
ii.timbres_X_MES(mes=mes)
|
ii.timbres_X_MES(mes=mes)
|
||||||
|
|
||||||
paginator = Paginator(clientes_list, 5)
|
|
||||||
|
|
||||||
try:
|
clientes_list =pageFunc(page,clientes_list,20)
|
||||||
lista = paginator.page(page)
|
|
||||||
except PageNotAnInteger:
|
# paginator = Paginator(clientes_list, 5)
|
||||||
lista = paginator.page(1)
|
|
||||||
except EmptyPage:
|
# try:
|
||||||
lista = paginator.page(paginator.num_pages)
|
# lista = paginator.page(page)
|
||||||
|
# except PageNotAnInteger:
|
||||||
|
# lista = paginator.page(1)
|
||||||
|
# except EmptyPage:
|
||||||
|
# lista = paginator.page(paginator.num_pages)
|
||||||
filters.pop('mes','')
|
filters.pop('mes','')
|
||||||
context = {
|
context = {
|
||||||
'lista':lista,
|
'lista':clientes_list,
|
||||||
'mes':mes,
|
'mes':mes,
|
||||||
'filters':filters
|
'filters':filters
|
||||||
|
|
||||||
@@ -119,8 +167,7 @@ def timbres_cliente(request, RFC):
|
|||||||
inicio = [int(i) for i in datepicker.split("/")]
|
inicio = [int(i) for i in datepicker.split("/")]
|
||||||
fin = [int(i) for i in datepickerFin.split("/")]
|
fin = [int(i) for i in datepickerFin.split("/")]
|
||||||
#print('inicio',inicio,' fin',fin)
|
#print('inicio',inicio,' fin',fin)
|
||||||
#inicio.sort(reverse=True)
|
|
||||||
#fin.sort(reverse=True)
|
|
||||||
start = datetime.datetime(inicio[2],inicio[0],inicio[1])
|
start = datetime.datetime(inicio[2],inicio[0],inicio[1])
|
||||||
start += datetime.timedelta(days=0)
|
start += datetime.timedelta(days=0)
|
||||||
end = datetime.datetime(fin[2],fin[0],fin[1])
|
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])
|
lista = lista.filter(created_at__range=[start, end])
|
||||||
|
|
||||||
conteo = lista.count()
|
conteo = lista.count()
|
||||||
print('conteo',conteo)
|
|
||||||
if conteo !=0 :
|
if conteo !=0 :
|
||||||
perPage = conteo // 2
|
perPage = conteo // 2
|
||||||
else:
|
else:
|
||||||
@@ -175,7 +222,7 @@ def export_Excel(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)
|
||||||
|
print('AQUIIIIIIIIIIIIIIII')
|
||||||
today = datetime.date.today()
|
today = datetime.date.today()
|
||||||
month = today.month
|
month = today.month
|
||||||
year = today.year
|
year = today.year
|
||||||
@@ -195,7 +242,6 @@ def export_Excel(request):
|
|||||||
print(f'dat{dat} findate:{findate}')
|
print(f'dat{dat} findate:{findate}')
|
||||||
if mes is not None and RFC is not None:
|
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__range=[dat,findate])
|
||||||
#objeto_a_trabajar = Timbres.objects.filter(rfcc=RFC, created_at__year=str(year),created_at__month=str(month))
|
|
||||||
else:
|
else:
|
||||||
objeto_a_trabajar = Clientes.objects.all()
|
objeto_a_trabajar = Clientes.objects.all()
|
||||||
for i,ii in enumerate(objeto_a_trabajar):
|
for i,ii in enumerate(objeto_a_trabajar):
|
||||||
|
|||||||
@@ -87,6 +87,9 @@ Timbres disponibles Comercio Digital: {{saldo.saldo}}
|
|||||||
<td>
|
<td>
|
||||||
<button class="btn btn-outline-info" id ="id_b_{{obj.RFC}}" onclick="aclick(event, '{{obj.RFC}}','{{obj.conteo_mes}}')">Excel</button>
|
<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 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>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@@ -127,7 +130,7 @@ Timbres disponibles Comercio Digital: {{saldo.saldo}}
|
|||||||
})
|
})
|
||||||
|
|
||||||
document.getElementById('table_select').addEventListener('change',(event)=>{
|
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')
|
let anc = document.getElementById('home_id')
|
||||||
anc.href=''
|
anc.href=''
|
||||||
let url = `?mes=${event.target.value}${filters}`
|
let url = `?mes=${event.target.value}${filters}`
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<h1>Timbres <strong>{{RFC}}</strong> </h1>
|
<h1>Timbres <strong>{{RFC}}</strong> </h1>
|
||||||
<h2>Timbres totales: <strong></strong>{{conteo}}</strong></h2>
|
<h2>Timbres totales: <strong></strong>{{conteo}}</strong></h2>
|
||||||
<span class="navbar-text mr-2">
|
<span class="navbar-text mr-2">
|
||||||
{% if filters.datepicker%}
|
{% if filters.datepicker%}
|
||||||
De fecha: <strong>"{{filters.datepicker}}"</strong>
|
De fecha: <strong>"{{filters.datepicker}}"</strong>
|
||||||
{% endif %}
|
{% 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