precio.py 1.43 KB
from django.utils import timezone
from .models import Edicto, ComprobantePago, Precio


def contador(edicto_id, precio_id):
    edicto = Edicto.objects.select_related('usuario').get(id=edicto_id)
    organismo = edicto.usuario.organismo.es_publico

    sellos = edicto.cantidad_sellos
    palabras = edicto.cantidad_palabras
    copias = edicto.cantidad_copias
    publicar = edicto.dias_publicar

    precio_valores = Precio.objects.values('precio',
                                           'precio_ejemplar',
                                           'vigencia_desde',
                                           'vigencia_hasta',).get(id=precio_id)

    precio = precio_valores['precio']
    precio_ejemplar = precio_valores['precio_ejemplar']
    vigencia_desde = precio_valores['vigencia_desde']
    vigencia_hasta = precio_valores['vigencia_hasta']

    current_datetime = timezone.now()

    if not (vigencia_desde <= current_datetime <= vigencia_hasta):
        raise ValueError("El precio seleccionado no se encuentra dentro de las fechas permitidas.")

    result_palabra = (sellos + palabras) * precio
    result_ejemplar = (copias * precio_ejemplar) + (publicar * precio_ejemplar)

    if organismo:
        resultado = result_ejemplar + result_palabra / 2
    else:
        resultado = result_ejemplar + result_palabra

    precio_resultado = ComprobantePago(edicto=edicto, resultado=resultado)
    precio_resultado.save()
    return precio_resultado