enviar Cancelacion Timbre
This commit is contained in:
@@ -3,7 +3,7 @@ import re
|
|||||||
import datetime
|
import datetime
|
||||||
import functools
|
import functools
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
import traceback
|
||||||
from asgiref.sync import sync_to_async
|
from asgiref.sync import sync_to_async
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.files.storage import FileSystemStorage
|
from django.core.files.storage import FileSystemStorage
|
||||||
@@ -19,6 +19,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
|||||||
|
|
||||||
from .custom_decorators import is_staff_access, http_basic_auth
|
from .custom_decorators import is_staff_access, http_basic_auth
|
||||||
from .models import Clientes,Timbres,saldoModel,ErroresTimbres
|
from .models import Clientes,Timbres,saldoModel,ErroresTimbres
|
||||||
|
from Sistemas.models import BitacoraErrores
|
||||||
from .serailizers import ClienteSerializer
|
from .serailizers import ClienteSerializer
|
||||||
from .forms import ClienteForm,EmailForm
|
from .forms import ClienteForm,EmailForm
|
||||||
|
|
||||||
@@ -28,6 +29,7 @@ from rest_framework.permissions import IsAuthenticated
|
|||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
from Sistemas.permissions import ItsAdminToken
|
from Sistemas.permissions import ItsAdminToken
|
||||||
|
|
||||||
#EXCEL
|
#EXCEL
|
||||||
@@ -39,6 +41,8 @@ from django.core.mail import EmailMessage
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def read_env_file():
|
def read_env_file():
|
||||||
try:
|
try:
|
||||||
#env_file = os.listdir(settings.BASE_DIR)
|
#env_file = os.listdir(settings.BASE_DIR)
|
||||||
@@ -270,12 +274,10 @@ def timbres_cliente(request, RFC):
|
|||||||
end += datetime.timedelta(days=1)
|
end += datetime.timedelta(days=1)
|
||||||
|
|
||||||
lista = lista.filter(created_at__range=[start, end])
|
lista = lista.filter(created_at__range=[start, end])
|
||||||
|
|
||||||
if mes is None or mes =='None' or mes=='':
|
if mes is None or mes =='None' or mes=='':
|
||||||
mes='00' #Todos
|
mes='00' #Todos
|
||||||
|
|
||||||
if mes != '00':
|
if mes != '00':
|
||||||
|
|
||||||
dat = datetime.datetime(int(year), int(mes),1)
|
dat = datetime.datetime(int(year), int(mes),1)
|
||||||
if dat.month in(1,3,5,7,8,10,12):
|
if dat.month in(1,3,5,7,8,10,12):
|
||||||
findate = dat+datetime.timedelta(days=30)
|
findate = dat+datetime.timedelta(days=30)
|
||||||
@@ -289,9 +291,7 @@ def timbres_cliente(request, RFC):
|
|||||||
lista = lista.filter(created_at__year=int(year))
|
lista = lista.filter(created_at__year=int(year))
|
||||||
|
|
||||||
conteo = lista.count()
|
conteo = lista.count()
|
||||||
|
|
||||||
lista =pageFunc(page,lista,50)
|
lista =pageFunc(page,lista,50)
|
||||||
|
|
||||||
context ={
|
context ={
|
||||||
'lista':lista,
|
'lista':lista,
|
||||||
'conteo':conteo,
|
'conteo':conteo,
|
||||||
@@ -405,8 +405,34 @@ class check_RFC(APIView):
|
|||||||
except Exception as E:
|
except Exception as E:
|
||||||
return Response({'Error':f'check_RFC:{E} RFC:{rfc}','isError':True})
|
return Response({'Error':f'check_RFC:{E} RFC:{rfc}','isError':True})
|
||||||
|
|
||||||
|
|
||||||
|
class CancelaTimbre(APIView):
|
||||||
|
"""API CLASS for upload the CFDI Version into the server"""
|
||||||
|
permissions_classes=[IsAuthenticated,]
|
||||||
|
|
||||||
|
def post(self,request,*args, **kwargs):
|
||||||
|
UUID = request.data.get('UUID')
|
||||||
|
try:
|
||||||
|
|
||||||
|
timbre = Timbres.objects.get(uuid=UUID)
|
||||||
|
obj={'uuid':timbre.uuid,'rfcc':timbre.rfcc,'fecha':timbre.fecha,'folio':timbre.folio,
|
||||||
|
'serie':timbre.serie,'tipo':'Cancela','rfcp':timbre.rfcp,'modo':'Normal'
|
||||||
|
}
|
||||||
|
cancelaTimbre = Timbres.objects.create(**obj)
|
||||||
|
|
||||||
|
return Response({'success':True})
|
||||||
|
except Exception as ex:
|
||||||
|
BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.CancelaTimbre')
|
||||||
|
return Response({'Error':f'{ex}','isError':True})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class add_timbre(APIView):
|
||||||
|
pass
|
||||||
|
|
||||||
class add_timbre2(APIView):
|
class add_timbre2(APIView):
|
||||||
permission_classes = (IsAuthenticated,ItsAdminToken,)
|
"""Agrega los timbres que realiza CFDI """
|
||||||
|
permission_classes = [ IsAuthenticated,ItsAdminToken]
|
||||||
def get(self,request):
|
def get(self,request):
|
||||||
uuid= request.GET.get('uuid', None)
|
uuid= request.GET.get('uuid', None)
|
||||||
rfcc_encoded = request.GET.get('rfcc', None)
|
rfcc_encoded = request.GET.get('rfcc', None)
|
||||||
@@ -419,7 +445,6 @@ class add_timbre2(APIView):
|
|||||||
|
|
||||||
rfcc = urllib.parse.unquote(rfcc_encoded)
|
rfcc = urllib.parse.unquote(rfcc_encoded)
|
||||||
rfcp = urllib.parse.unquote(rfcp_encoded)
|
rfcp = urllib.parse.unquote(rfcp_encoded)
|
||||||
|
|
||||||
obj={'uuid':uuid,'rfcc':rfcc,'fecha':fecha,'folio':folio,
|
obj={'uuid':uuid,'rfcc':rfcc,'fecha':fecha,'folio':folio,
|
||||||
'serie':serie,'tipo':tipo,'rfcp':rfcp,'modo':modo
|
'serie':serie,'tipo':tipo,'rfcp':rfcp,'modo':modo
|
||||||
}
|
}
|
||||||
@@ -437,31 +462,39 @@ class add_timbre2(APIView):
|
|||||||
return Response({'Error':f'{e}'})
|
return Response({'Error':f'{e}'})
|
||||||
|
|
||||||
class saldo_funct2(APIView):
|
class saldo_funct2(APIView):
|
||||||
permission_classes =(IsAuthenticated,ItsAdminToken,)
|
"""Agrega los timbres disponibles"""
|
||||||
|
permission_classes = [ IsAuthenticated,ItsAdminToken]
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
timbres = request.GET.get('num',None)
|
timbres = request.GET.get('num',None)
|
||||||
try:
|
try:
|
||||||
Saldo = saldoModel.objects.first()
|
Saldo = saldoModel.objects.first()
|
||||||
Saldo.saldo=timbres
|
Saldo.saldo=timbres
|
||||||
Saldo.save()
|
Saldo.save()
|
||||||
except:
|
except Exception as e:
|
||||||
Saldo = saldoModel.objects.create(saldo=int(timbres))
|
Saldo = saldoModel.objects.create(saldo=int(timbres))
|
||||||
Saldo.save()
|
Saldo.save()
|
||||||
content = {'data':Saldo.saldo}
|
content = {'data':Saldo.saldo}
|
||||||
return Response(content)
|
return Response(content)
|
||||||
|
|
||||||
class check_host(APIView):
|
class check_host(APIView):
|
||||||
|
"""Check Host"""
|
||||||
permission_classes = (IsAuthenticated,ItsAdminToken,)
|
permission_classes = (IsAuthenticated,ItsAdminToken,)
|
||||||
def post(self,request, format=None):
|
def post(self,request, format=None):
|
||||||
data = request.data
|
data = request.data
|
||||||
return Response(data)
|
return Response(data)
|
||||||
#---------------------------CLASS BASED VIEWS
|
#---------------------------CLASS BASED VIEWS
|
||||||
#--------------------------------------------
|
#--------------------------------------------
|
||||||
class ErroresTimbresListView(LoginRequiredMixin,ListView):
|
class ErroresTimbresListView(UserPassesTestMixin, LoginRequiredMixin,ListView):
|
||||||
|
"""Muestra los error de la tabla errores de timbres"""
|
||||||
model = ErroresTimbres
|
model = ErroresTimbres
|
||||||
paginate_by = 100
|
paginate_by = 100
|
||||||
template_name = 'Clientes/Errores_Timbres_list.html'
|
template_name = 'Clientes/Errores_Timbres_list.html'
|
||||||
|
def test_func(self):
|
||||||
|
"""Verifica que el usuario logeado este dentro del grupo permitido"""
|
||||||
|
res = self.request.user.groups.filter(name= 'admin_soft')
|
||||||
|
if not res:
|
||||||
|
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
||||||
|
return res
|
||||||
class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView):
|
class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView):
|
||||||
model= Clientes
|
model= Clientes
|
||||||
form_class=ClienteForm
|
form_class=ClienteForm
|
||||||
@@ -469,6 +502,7 @@ class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView):
|
|||||||
template_name='Clientes/edit_cliente.html'
|
template_name='Clientes/edit_cliente.html'
|
||||||
|
|
||||||
def test_func(self):
|
def test_func(self):
|
||||||
|
"""Verifica que el usuario logeado este dentro del grupo permitido"""
|
||||||
res = self.request.user.groups.filter(name= 'admin_soft')
|
res = self.request.user.groups.filter(name= 'admin_soft')
|
||||||
if not res:
|
if not res:
|
||||||
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from django.views.generic.edit import CreateView
|
|||||||
from rest_framework.authentication import TokenAuthentication
|
from rest_framework.authentication import TokenAuthentication
|
||||||
from rest_framework.decorators import authentication_classes,api_view,permission_classes
|
from rest_framework.decorators import authentication_classes,api_view,permission_classes
|
||||||
from rest_framework.exceptions import AuthenticationFailed
|
from rest_framework.exceptions import AuthenticationFailed
|
||||||
from rest_framework.permissions import IsAuthenticated
|
|
||||||
|
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|||||||
@@ -61,8 +61,11 @@
|
|||||||
{% if lista.number == p %}
|
{% if lista.number == p %}
|
||||||
<li class="page-item"><a class="page-link" style="color: red;" href="#">{{ p }}</a></li>
|
<li class="page-item"><a class="page-link" style="color: red;" href="#">{{ p }}</a></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="page-item"><a class="page-link" href="?page={{ p }}{% for i,v in filters.items %}&{{i}}={{v}}{% endfor%}">{{ p }}</a></li>
|
{% comment%}
|
||||||
{% endif %}
|
<li class="page-item"><a class="page-link" href="?page={{ p }}{% for i,v in filters.items %}&{{i}}={{v}}{% endfor%}">{{ p }}</a></li>
|
||||||
|
{% endcomment%}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if lista.has_next %}
|
{% if lista.has_next %}
|
||||||
|
|||||||
Reference in New Issue
Block a user