Add `refno2` field
This commit is contained in:
parent
b58a7313a8
commit
517d1df38f
|
|
@ -118,7 +118,7 @@ class User(AbstractUser):
|
||||||
# is only set by abacus invoice export code
|
# is only set by abacus invoice export code
|
||||||
abacus_debitor_number = models.BigIntegerField(unique=True, null=True, blank=True)
|
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:
|
if self.abacus_debitor_number:
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
@ -130,7 +130,8 @@ class User(AbstractUser):
|
||||||
current_max if current_max is not None else 60_000_000
|
current_max if current_max is not None else 60_000_000
|
||||||
) + 1
|
) + 1
|
||||||
self.abacus_debitor_number = new_debitor_number
|
self.abacus_debitor_number = new_debitor_number
|
||||||
self.save()
|
if not disable_save:
|
||||||
|
self.save()
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def create_avatar_url(self, size=400):
|
def create_avatar_url(self, size=400):
|
||||||
|
|
|
||||||
|
|
@ -39,4 +39,9 @@ class Migration(migrations.Migration):
|
||||||
name="phone_number",
|
name="phone_number",
|
||||||
field=models.CharField(blank=True, default="", max_length=255),
|
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),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ class CheckoutInformation(models.Model):
|
||||||
|
|
||||||
invoice_transmitted_at = models.DateTimeField(blank=True, null=True)
|
invoice_transmitted_at = models.DateTimeField(blank=True, null=True)
|
||||||
transaction_id = models.CharField(max_length=255)
|
transaction_id = models.CharField(max_length=255)
|
||||||
|
refno2 = models.CharField(max_length=255)
|
||||||
|
|
||||||
# end user (required)
|
# end user (required)
|
||||||
first_name = models.CharField(max_length=255)
|
first_name = models.CharField(max_length=255)
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import structlog
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from vbv_lernwelt.core.admin import User
|
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.datatrans.datatrans_api_client import DatatransApiClient
|
||||||
from vbv_lernwelt.shop.models import CheckoutState
|
from vbv_lernwelt.shop.models import CheckoutState
|
||||||
|
|
||||||
|
|
@ -77,6 +78,7 @@ def init_datatrans_transaction(
|
||||||
redirect_url_error: str,
|
redirect_url_error: str,
|
||||||
redirect_url_cancel: str,
|
redirect_url_cancel: str,
|
||||||
webhook_url: str,
|
webhook_url: str,
|
||||||
|
refno2: str,
|
||||||
datatrans_customer_data: dict = None,
|
datatrans_customer_data: dict = None,
|
||||||
datatrans_int_data: dict = None,
|
datatrans_int_data: dict = None,
|
||||||
context_data: dict = None,
|
context_data: dict = None,
|
||||||
|
|
@ -90,6 +92,7 @@ def init_datatrans_transaction(
|
||||||
"currency": "CHF",
|
"currency": "CHF",
|
||||||
"language": user.language,
|
"language": user.language,
|
||||||
"refno": str(uuid.uuid4()),
|
"refno": str(uuid.uuid4()),
|
||||||
|
"refno2": refno2,
|
||||||
"webhook": {"url": webhook_url},
|
"webhook": {"url": webhook_url},
|
||||||
"redirect": {
|
"redirect": {
|
||||||
"successUrl": redirect_url_success,
|
"successUrl": redirect_url_success,
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ from vbv_lernwelt.shop.const import (
|
||||||
VV_DE_PRODUCT_SKU,
|
VV_DE_PRODUCT_SKU,
|
||||||
VV_FR_PRODUCT_SKU,
|
VV_FR_PRODUCT_SKU,
|
||||||
VV_IT_PRODUCT_SKU,
|
VV_IT_PRODUCT_SKU,
|
||||||
|
VV_PRODUCT_NUMBER,
|
||||||
)
|
)
|
||||||
from vbv_lernwelt.shop.models import CheckoutInformation, CheckoutState, Product
|
from vbv_lernwelt.shop.models import CheckoutInformation, CheckoutState, Product
|
||||||
from vbv_lernwelt.shop.services import (
|
from vbv_lernwelt.shop.services import (
|
||||||
|
|
@ -115,13 +116,16 @@ def checkout_vv(request):
|
||||||
ip_address = request.META.get("REMOTE_ADDR")
|
ip_address = request.META.get("REMOTE_ADDR")
|
||||||
email = request.user.email
|
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:
|
try:
|
||||||
datatrans_customer_data = None
|
datatrans_customer_data = None
|
||||||
datatrans_int_data = None
|
datatrans_int_data = None
|
||||||
if with_cembra_byjuno_invoice:
|
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
|
# see https://api-reference.datatrans.ch/#tag/v1transactions as reference
|
||||||
datatrans_customer_data = {
|
datatrans_customer_data = {
|
||||||
"firstName": request.user.first_name,
|
"firstName": request.user.first_name,
|
||||||
|
|
@ -155,6 +159,7 @@ def checkout_vv(request):
|
||||||
),
|
),
|
||||||
redirect_url_cancel=checkout_cancel_url(base_redirect_url),
|
redirect_url_cancel=checkout_cancel_url(base_redirect_url),
|
||||||
webhook_url=webhook_url(base_redirect_url),
|
webhook_url=webhook_url(base_redirect_url),
|
||||||
|
refno2=refno2,
|
||||||
datatrans_customer_data=datatrans_customer_data,
|
datatrans_customer_data=datatrans_customer_data,
|
||||||
datatrans_int_data=datatrans_int_data,
|
datatrans_int_data=datatrans_int_data,
|
||||||
context_data=context_data,
|
context_data=context_data,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue