diff --git a/core/docs/drf/views.py b/core/docs/drf/views.py index 06bc43d6..3d62c800 100644 --- a/core/docs/drf/views.py +++ b/core/docs/drf/views.py @@ -91,7 +91,7 @@ BUY_AS_BUSINESS_SCHEMA = { summary=_("purchase an order as a business"), request=BuyAsBusinessOrderSerializer, responses={ - 200: TransactionProcessSerializer, + 201: TransactionProcessSerializer, 400: error, }, description=( diff --git a/core/models.py b/core/models.py index 4c5a2f97..b90e445d 100644 --- a/core/models.py +++ b/core/models.py @@ -1640,6 +1640,11 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [mi if not order.user: raise ValueError(_("you cannot buy an order without a user")) + if order.user.attributes.get("is_business", False): + if type(order.attributes) is not dict: + order.attributes = {} + order.attributes.update({"is_business": True}) + if not order.user.payments_balance: raise ValueError(_("a user without a balance cannot buy with balance")) @@ -1663,8 +1668,8 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [mi currency=CURRENCY_CODE, order=order, ) - - return order + case _: + raise ValueError(_("invalid force value")) def buy_without_registration(self, products: list, promocode_uuid, **kwargs) -> Transaction | None: if config.DISABLED_COMMERCE: diff --git a/core/serializers/utility.py b/core/serializers/utility.py index 8ecd124a..64cc9bec 100644 --- a/core/serializers/utility.py +++ b/core/serializers/utility.py @@ -176,7 +176,7 @@ class BuyUnregisteredOrderSerializer(Serializer): class BuyAsBusinessOrderSerializer(Serializer): products = ListField(child=AddOrderProductSerializer(), required=True) - business_inn = CharField(required=True) + business_identificator = CharField(required=True) business_email = CharField(required=True) business_phone_number = CharField(required=True) billing_business_address_uuid = CharField(required=False) diff --git a/core/views.py b/core/views.py index a3b28f30..fd8c2dd8 100644 --- a/core/views.py +++ b/core/views.py @@ -445,7 +445,7 @@ class BuyAsBusinessView(APIView): is_business=True, ) return Response( - status=status.HTTP_202_ACCEPTED, + status=status.HTTP_201_CREATED, data=TransactionProcessSerializer(transaction).data, )