#69 refactor(ReconciliationJar): extract to method.
This commit is contained in:
parent
8ab7903a0a
commit
9c0eebd07d
@ -58,18 +58,14 @@ class ReconciliateJarView(APIView):
|
|||||||
cash_purchases_id = data.get('cash_purchases')
|
cash_purchases_id = data.get('cash_purchases')
|
||||||
serializer = ReconciliationJarSerializer(data=data)
|
serializer = ReconciliationJarSerializer(data=data)
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
purchases = Sale.objects.filter(pk__in=cash_purchases_id)
|
cash_purchases = Sale.objects.filter(pk__in=cash_purchases_id)
|
||||||
total_cash_purchases = sum(p.get_total() for p in purchases)
|
if not self._is_valid_total(cash_purchases, data.get('total_cash_purchases')):
|
||||||
if total_cash_purchases != Decimal(data.get('total_cash_purchases')):
|
|
||||||
return Response(
|
return Response(
|
||||||
{'error': 'total_cash_purchases not equal to sum of all purchases.'},
|
{'error': 'total_cash_purchases not equal to sum of all purchases.'},
|
||||||
status=HTTP_400_BAD_REQUEST
|
status=HTTP_400_BAD_REQUEST
|
||||||
)
|
)
|
||||||
reconciliation = serializer.save()
|
reconciliation = serializer.save()
|
||||||
for purchase in purchases:
|
self._link_purchases(reconciliation, cash_purchases)
|
||||||
purchase.reconciliation = reconciliation
|
|
||||||
purchase.clean()
|
|
||||||
purchase.save()
|
|
||||||
return Response({'id': reconciliation.id})
|
return Response({'id': reconciliation.id})
|
||||||
return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
|
return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
@ -77,3 +73,13 @@ class ReconciliateJarView(APIView):
|
|||||||
reconciliations = ReconciliationJar.objects.all()
|
reconciliations = ReconciliationJar.objects.all()
|
||||||
serializer = ReconciliationJarSerializer(reconciliations, many=True)
|
serializer = ReconciliationJarSerializer(reconciliations, many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
def _is_valid_total(self, purchases, total):
|
||||||
|
calculated_total = sum(p.get_total() for p in purchases)
|
||||||
|
return calculated_total == Decimal(total)
|
||||||
|
|
||||||
|
def _link_purchases(self, reconciliation, purchases):
|
||||||
|
for purchase in purchases:
|
||||||
|
purchase.reconciliation = reconciliation
|
||||||
|
purchase.clean()
|
||||||
|
purchase.save()
|
||||||
|
Loading…
Reference in New Issue
Block a user