Skip to content
Snippets Groups Projects
Commit 0657deed authored by Christian Dresen's avatar Christian Dresen
Browse files

[WarpPay] Fixed Transaction REST API Endpoint

parent e027df92
No related branches found
No related tags found
No related merge requests found
...@@ -8,7 +8,7 @@ urlpatterns = [ ...@@ -8,7 +8,7 @@ urlpatterns = [
url(r'^api/products/$', views.product_list), url(r'^api/products/$', views.product_list),
url(r'^api/categories/$', views.category_list), url(r'^api/categories/$', views.category_list),
# url(r'^api/gen_token/$', views.gen_token), # url(r'^api/gen_token/$', views.gen_token),
url(r'^api/transaction/(?P<user_id>\w+)/$', views.transaction), url(r'^api/transactions/(?P<user_id>\w+)/$', views.multiple_transaction),
url(r'^api/products/(?P<prod_id>\w+)/barcode/$', views.addBarcode), url(r'^api/products/(?P<prod_id>\w+)/barcode/$', views.addBarcode),
] ]
...@@ -115,13 +115,12 @@ def user_list(request, user_id = 0): ...@@ -115,13 +115,12 @@ def user_list(request, user_id = 0):
return Response(serializer.data, status=state) return Response(serializer.data, status=state)
return Response() return Response()
@api_view(['PUT']) @api_view(['PUT'])
@authentication_classes((TokenAuthentication,)) @authentication_classes((TokenAuthentication,))
@permission_classes((IsAuthenticated,)) @permission_classes((IsAuthenticated,))
def transaction(request, user_id=None): def multiple_transaction(request, user_id=None):
if request.method == 'PUT': if request.method == 'PUT':
if 'trans_type' not in request.data or not user_id: if not user_id:
return Response(status=status.HTTP_406_NOT_ACCEPTABLE) return Response(status=status.HTTP_406_NOT_ACCEPTABLE)
try: try:
...@@ -129,38 +128,54 @@ def transaction(request, user_id=None): ...@@ -129,38 +128,54 @@ def transaction(request, user_id=None):
except ObjectDoesNotExist: except ObjectDoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND) return Response(status=status.HTTP_404_NOT_FOUND)
transactions = []
products = []
for transact in request.data:
if 'trans_type' not in transact:
return Response(status=status.HTTP_406_NOT_ACCEPTABLE)
t = Transaction() t = Transaction()
t.type = int(request.data['trans_type']) t.type = int(transact['trans_type'])
if t.type == 1: if t.type == 1:
if 'amount' not in request.data or ('amount' in request.data and float(request.data['amount'] < 0)): if 'amount' not in transact or ('amount' in transact and float(transact['amount'] < 0)):
return Response(status=status.HTTP_406_NOT_ACCEPTABLE) return Response(status=status.HTTP_406_NOT_ACCEPTABLE)
if 'cash_paid' in request.data: if 'cash_paid' in transact:
t.cash_paid = bool(request.data['cash_paid']) t.cash_paid = bool(transact['cash_paid'])
else: else:
t.cash_paid = True t.cash_paid = True
t.amount = float(request.data['amount']) t.amount = float(transact['amount'])
u.credit +=t.amount u.credit += t.amount
elif t.type == 2: elif t.type == 2:
try: try:
product = Product.objects.get(id=request.data['product']['id']) product = Product.objects.get(id=transact['product']['id'])
t.product = product t.product = product
if 'cash_paid' in request.data: if 'cash_paid' in transact:
t.cash_paid = bool(request.data['cash_paid']) t.cash_paid = bool(transact['cash_paid'])
t.amount = product.price_vk t.amount = product.price_vk
if not t.cash_paid: if not t.cash_paid:
u.credit -= t.amount u.credit -= t.amount
product.stock_count -= 1 product.stock_count -= 1
product.save() products.append(product)
except: except:
return Response(status=status.HTTP_406_NOT_ACCEPTABLE) return Response(status=status.HTTP_406_NOT_ACCEPTABLE)
else: else:
return Response(status=status.HTTP_406_NOT_ACCEPTABLE) return Response(status=status.HTTP_406_NOT_ACCEPTABLE)
transactions.append(t)
for t in transactions:
t.save() t.save()
u.save() print(t)
return Response() for p in products:
p.save()
print(p)
u.save()
print(u)
return Response()
def sync_users(): def sync_users():
for ldapuser in LdapUser.objects.all(): for ldapuser in LdapUser.objects.all():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment