Exemplo n.º 1
0
 def handle(self, *args, **options):
     subscriptions = ServiceSubscription.objects.all()
     for subscription in subscriptions:
         if not subscription.reference_number:
             print(
                 f"Generating ref for service subscription {subscription}")
             subscription.reference_number = referencenumber.generate(
                 settings.SERVICE_INVOICE_REFERENCE_BASE + subscription.id)
             subscription.save()
Exemplo n.º 2
0
def custominvoice(request):
    days = 0
    amount = 0
    servicename = ""
    paid_invoices = CustomInvoice.objects.filter(
        user=request.user, payment_transaction__isnull=False)
    unpaid_invoices = CustomInvoice.objects.filter(
        user=request.user, payment_transaction__isnull=True)

    if request.method == "POST":
        form = CustomInvoiceForm(request.POST)
        form.fields["service"].queryset = ServiceSubscription.objects.filter(
            user=request.user).exclude(state=ServiceSubscription.SUSPENDED)

        if form.is_valid():
            count = int(form.cleaned_data["count"])
            if count <= 0:
                raise Exception("Invalid count, should never happen!")

            service_subscription_id = int(request.POST["service"])
            subscription = ServiceSubscription.objects.get(
                id=service_subscription_id)
            days = subscription.service.days_per_payment * count
            amount = subscription.service.cost * count
            servicename = subscription.service.name

            if "create" in request.POST:
                invoice = CustomInvoice(
                    user=request.user,
                    subscription=subscription,
                    amount=amount,
                    days=days,
                )
                invoice.save()
                invoice.reference_number = referencenumber.generate(
                    settings.CUSTOM_INVOICE_REFERENCE_BASE + invoice.id)
                invoice.save()
    else:
        form = CustomInvoiceForm()
        form.fields["service"].queryset = ServiceSubscription.objects.filter(
            user=request.user).exclude(state=ServiceSubscription.SUSPENDED)
    return render(
        request,
        "www/custominvoice.html",
        {
            "form": form,
            "paid_invoices": paid_invoices,
            "unpaid_invoices": unpaid_invoices,
            "days": days,
            "amount": amount,
            "servicename": servicename,
        },
    )
Exemplo n.º 3
0
def updateuser(request, id):
    user = CustomUser.objects.get(id=id)

    # First, generate any missing ref numbers
    subscriptions = ServiceSubscription.objects.filter(user=user)
    for subscription in subscriptions:
        if not subscription.reference_number:
            subscription.reference_number = referencenumber.generate(
                settings.SERVICE_INVOICE_REFERENCE_BASE + subscription.id)
            subscription.save()

    BusinessLogic.updateuser(user)
    return userdetails(request, id)
Exemplo n.º 4
0
 def create_servicesubscription(user, service, state):
     """
     Creates a new service subscription for wanted user and service
     Sets it to wanted state and generates a reference number for it.
     """
     subscription = ServiceSubscription(user=user,
                                        service=service,
                                        state=state)
     subscription.save()
     subscription.reference_number = referencenumber.generate(
         settings.SERVICE_INVOICE_REFERENCE_BASE + subscription.id)
     subscription.save()
     return subscription
Exemplo n.º 5
0
def service_subscription_create(sender, instance: models.ServiceSubscription,
                                created, raw, **kwargs):
    if raw:
        return

    if created:
        if instance.reference_number is None:
            refnum = referencenumber.generate(
                settings.SERVICE_INVOICE_REFERENCE_BASE + instance.id)
            instance.reference_number = refnum
            instance.save()
            logger.info(
                f"ServiceSubscription {instance} created for user {instance.user} without reference number. Generated reference number {refnum} for it"
            )
Exemplo n.º 6
0
def custominvoice_create(sender, instance: models.CustomInvoice, created, raw,
                         **kwargs):
    """
    When custominvoice is created, generate reference number automatically if it is not defined
    """
    if raw:
        return

    if created:
        if instance.reference_number is None:
            refnum = referencenumber.generate(
                settings.CUSTOM_INVOICE_REFERENCE_BASE + instance.id)
            instance.reference_number = refnum
            instance.save()
            logger.info(
                f"CustomInvoice {instance} created for user {instance.user} without reference number. Generated reference number {refnum} for it"
            )
Exemplo n.º 7
0
def application_creation(sender, instance: models.MembershipApplication,
                         created, raw, **kwargs):
    """
    This is for the models internal use, others should listen to create_application signal which is triggered after
    all the internal things have been done
    """
    if raw:
        return

    if created:
        # now we have the users id and we can generate reference number from it
        # saving it will trigger a new post_save but created will be False (at least I hope so :)
        # as instance id:s start from 1 the reference numbers will be first multiplied by 100
        instance.reference_number = referencenumber.generate(instance.id * 100)
        instance.save()

        logger.info("Membership application created {}".format(instance))
        create_application.send(instance.__class__, instance=instance)
        logger.info("Membership application creation done {}".format(instance))
def generate_missing_custominvoice_reference_numbers(apps, schema_editor):
    CustomInvoice = apps.get_model('users', 'CustomInvoice')
    for invoice in CustomInvoice.objects.all():
        if invoice.reference_number is None:
            invoice.reference_number = referencenumber.generate(settings.CUSTOM_INVOICE_REFERENCE_BASE + invoice.id)
            invoice.save()