Add `refno2` field

This commit is contained in:
Daniel Egger 2024-07-02 15:11:39 +02:00
parent b58a7313a8
commit 517d1df38f
5 changed files with 20 additions and 5 deletions

View File

@ -118,7 +118,7 @@ class User(AbstractUser):
# is only set by abacus invoice export code
abacus_debitor_number = models.BigIntegerField(unique=True, null=True, blank=True)
def set_increment_abacus_debitor_number(self):
def set_increment_abacus_debitor_number(self, disable_save=False):
if self.abacus_debitor_number:
return self
@ -130,7 +130,8 @@ class User(AbstractUser):
current_max if current_max is not None else 60_000_000
) + 1
self.abacus_debitor_number = new_debitor_number
self.save()
if not disable_save:
self.save()
return self
def create_avatar_url(self, size=400):

View File

@ -39,4 +39,9 @@ class Migration(migrations.Migration):
name="phone_number",
field=models.CharField(blank=True, default="", max_length=255),
),
migrations.AddField(
model_name="checkoutinformation",
name="refno2",
field=models.CharField(blank=True, default="", max_length=255),
),
]

View File

@ -62,6 +62,7 @@ class CheckoutInformation(models.Model):
invoice_transmitted_at = models.DateTimeField(blank=True, null=True)
transaction_id = models.CharField(max_length=255)
refno2 = models.CharField(max_length=255)
# end user (required)
first_name = models.CharField(max_length=255)

View File

@ -7,6 +7,7 @@ import structlog
from django.conf import settings
from vbv_lernwelt.core.admin import User
from vbv_lernwelt.shop.const import VV_PRODUCT_NUMBER
from vbv_lernwelt.shop.datatrans.datatrans_api_client import DatatransApiClient
from vbv_lernwelt.shop.models import CheckoutState
@ -77,6 +78,7 @@ def init_datatrans_transaction(
redirect_url_error: str,
redirect_url_cancel: str,
webhook_url: str,
refno2: str,
datatrans_customer_data: dict = None,
datatrans_int_data: dict = None,
context_data: dict = None,
@ -90,6 +92,7 @@ def init_datatrans_transaction(
"currency": "CHF",
"language": user.language,
"refno": str(uuid.uuid4()),
"refno2": refno2,
"webhook": {"url": webhook_url},
"redirect": {
"successUrl": redirect_url_success,

View File

@ -13,6 +13,7 @@ from vbv_lernwelt.shop.const import (
VV_DE_PRODUCT_SKU,
VV_FR_PRODUCT_SKU,
VV_IT_PRODUCT_SKU,
VV_PRODUCT_NUMBER,
)
from vbv_lernwelt.shop.models import CheckoutInformation, CheckoutState, Product
from vbv_lernwelt.shop.services import (
@ -115,13 +116,16 @@ def checkout_vv(request):
ip_address = request.META.get("REMOTE_ADDR")
email = request.user.email
request.user.set_increment_abacus_debitor_number(
disable_save="fakeapi" in settings.DATATRANS_API_ENDPOINT
)
refno2 = f"{request.user.abacus_debitor_number}_{VV_PRODUCT_NUMBER}"
try:
datatrans_customer_data = None
datatrans_int_data = None
if with_cembra_byjuno_invoice:
if "fakeapi" not in settings.DATATRANS_API_ENDPOINT:
request.user.set_increment_abacus_debitor_number()
# see https://api-reference.datatrans.ch/#tag/v1transactions as reference
datatrans_customer_data = {
"firstName": request.user.first_name,
@ -155,6 +159,7 @@ def checkout_vv(request):
),
redirect_url_cancel=checkout_cancel_url(base_redirect_url),
webhook_url=webhook_url(base_redirect_url),
refno2=refno2,
datatrans_customer_data=datatrans_customer_data,
datatrans_int_data=datatrans_int_data,
context_data=context_data,