feature/implementacion de hub en EFC
This commit is contained in:
@@ -257,12 +257,16 @@ class PedimentoFilter(django_filters.FilterSet):
|
||||
# Rango de fecha de pago: ?fecha_pago_desde=YYYY-MM-DD&fecha_pago_hasta=YYYY-MM-DD
|
||||
fecha_pago_desde = django_filters.DateFilter(field_name='fecha_pago', lookup_expr='gte')
|
||||
fecha_pago_hasta = django_filters.DateFilter(field_name='fecha_pago', lookup_expr='lte')
|
||||
# CharFilter directo sobre contribuyente_id (RFC). ModelChoiceFilter silenciosamente
|
||||
# omite el filtro cuando el RFC no existe, lo que causa fuga de pedimentos de otros
|
||||
# importadores. Con CharFilter+exact: RFC inválido → cero resultados, nunca fuga.
|
||||
contribuyente = django_filters.CharFilter(field_name='contribuyente', lookup_expr='exact')
|
||||
|
||||
class Meta:
|
||||
model = Pedimento
|
||||
fields = [
|
||||
'patente', 'aduana', 'tipo_operacion', 'clave_pedimento',
|
||||
'pedimento', 'existe_expediente', 'contribuyente',
|
||||
'pedimento', 'existe_expediente',
|
||||
'curp_apoderado', 'fecha_pago', 'pedimento_app',
|
||||
]
|
||||
class ViewSetPedimento(LoggingMixin, viewsets.ModelViewSet, OrganizacionFiltradaMixin): # Pendiente de permisos de creacion
|
||||
@@ -1198,18 +1202,18 @@ class ViewSetPedimento(LoggingMixin, viewsets.ModelViewSet, OrganizacionFiltrada
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
# Validar organización del usuario
|
||||
if not request.user.is_authenticated or not hasattr(request.user, 'organizacion'):
|
||||
# Validar organización del usuario (superuser usa active_organization)
|
||||
from core.permissions import get_org_context
|
||||
organizacion = get_org_context(request.user) if request.user.is_authenticated else None
|
||||
if not organizacion:
|
||||
return Response(
|
||||
{
|
||||
"tieneError": True,
|
||||
"error": "Usuario no autenticado o sin organización"
|
||||
},
|
||||
"error": "Usuario no autenticado o sin organización asignada"
|
||||
},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
organizacion = request.user.organizacion
|
||||
|
||||
# Regex para validar nomenclatura: anio-aduana-patente-pedimento
|
||||
nomenclatura_pattern = re.compile(r'^(\d{2})-(\d{2,3})-(\d{4})-(\d{7})$')
|
||||
nomenclatura_pattern_sin_anio = re.compile(r'^(\d{2,3})-(\d{4})-(\d{7})$')
|
||||
@@ -1744,17 +1748,17 @@ class ViewSetPedimento(LoggingMixin, viewsets.ModelViewSet, OrganizacionFiltrada
|
||||
partidas_input = request.data.get('partidas')
|
||||
fuente_archivos = request.data.get('partidas')
|
||||
|
||||
# Validar organización del usuario
|
||||
if not request.user.is_authenticated or not hasattr(request.user, 'organizacion'):
|
||||
# Validar organización del usuario (superuser usa active_organization)
|
||||
from core.permissions import get_org_context
|
||||
organizacion = get_org_context(request.user) if request.user.is_authenticated else None
|
||||
if not organizacion:
|
||||
return Response(
|
||||
{
|
||||
"tieneError": True,
|
||||
"error": "Usuario no autenticado o sin organización"
|
||||
},
|
||||
"error": "Usuario no autenticado o sin organización asignada"
|
||||
},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
organizacion = request.user.organizacion
|
||||
|
||||
# Regex para validar nomenclatura: anio-aduana-patente-pedimento
|
||||
nomenclatura_pattern = re.compile(r'^(\d{2})-(\d{2,3})-(\d{4})-(\d{7})$')
|
||||
@@ -2210,16 +2214,16 @@ class ViewSetPedimento(LoggingMixin, viewsets.ModelViewSet, OrganizacionFiltrada
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
# Validar organización del usuario
|
||||
if not request.user.is_authenticated or not hasattr(request.user, 'organizacion'):
|
||||
# Validar organización del usuario (superuser usa active_organization)
|
||||
from core.permissions import get_org_context
|
||||
organizacion = get_org_context(request.user) if request.user.is_authenticated else None
|
||||
if not organizacion:
|
||||
return Response(
|
||||
{'tieneError': True,
|
||||
"mensaje": "Usuario no autenticado o sin organización"},
|
||||
"mensaje": "Usuario no autenticado o sin organización asignada"},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
organizacion = request.user.organizacion
|
||||
|
||||
# Preparar parámetros
|
||||
parametros = {
|
||||
'contribuyente': request.data.get('contribuyente'),
|
||||
|
||||
Reference in New Issue
Block a user