precio.py 1.33 KB
from .models import ComprobantePago


def calculadora(edicto, precio):
    try:
        descuento = 50
        organismo = edicto.creado_por.organismo
        es_publico = organismo.es_publico if organismo else False
        sellos = edicto.cantidad_sellos
        palabras = edicto.cantidad_palabras
        copias = edicto.cantidad_copias
        publicar = edicto.dias_publicar
        precio_valores = {
            'precio': precio.precio,
            'precio_ejemplar': precio.precio_ejemplar,
            'precio_dia': precio.precio_dia
        }

        result_palabra = (sellos + palabras) * precio_valores['precio']
        result_ejemplar = (copias * precio_valores['precio_ejemplar']) + (publicar * precio_valores['precio_dia'])
        subtotal = result_ejemplar + result_palabra

        if es_publico:
            resultado = (descuento * subtotal) / 100
        else:
            resultado = ((100 - descuento) * subtotal) / 100

        comprobante = ComprobantePago(monto_total=resultado,
                                      monto_subtotal=subtotal,
                                      monto_descuento=resultado,
                                      edicto=edicto)
        comprobante.save()

        return comprobante

    except ValueError as values:
        raise ValueError("Los valores proporcionados son incorrectos: " + str(values))