diff --git a/tienda_ilusion/don_confiao/serializers.py b/tienda_ilusion/don_confiao/serializers.py index d567275..8c68dd4 100644 --- a/tienda_ilusion/don_confiao/serializers.py +++ b/tienda_ilusion/don_confiao/serializers.py @@ -10,9 +10,12 @@ class SaleLineSerializer(serializers.ModelSerializer): class SaleSerializer(serializers.ModelSerializer): + total = serializers.ReadOnlyField(source='get_total') + class Meta: model = Sale - fields = ['id', 'customer', 'date', 'saleline_set'] + fields = ['id', 'customer', 'date', 'saleline_set', + 'total', 'payment_method'] class ProductSerializer(serializers.ModelSerializer): @@ -28,6 +31,8 @@ class CustomerSerializer(serializers.ModelSerializer): class ReconciliationJarSerializer(serializers.ModelSerializer): + Sales = SaleSerializer(many=True, read_only=True) + class Meta: model = ReconciliationJar fields = [ @@ -37,8 +42,10 @@ class ReconciliationJarSerializer(serializers.ModelSerializer): 'cash_taken', 'cash_discrepancy', 'total_cash_purchases', + 'Sales', ] + class PaymentMethodSerializer(serializers.Serializer): text = serializers.CharField() value = serializers.CharField() @@ -49,6 +56,7 @@ class PaymentMethodSerializer(serializers.Serializer): 'value': instance[0], } + class SaleForRenconciliationSerializer(serializers.Serializer): id = serializers.IntegerField() date = serializers.DateTimeField() diff --git a/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py b/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py index 1fdb0b4..9efb15d 100644 --- a/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py +++ b/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py @@ -139,22 +139,7 @@ class TestJarReconcliation(TestCase): self.assertIn('total_cash_purchases', content['error']) def test_create_reconciliation_with_purchases(self): - url = '/don_confiao/reconciliate_jar' - total_purchases = (11 * 72500) + (27 * 72500) - data = { - 'date_time': '2024-12-02T21:07', - 'reconcilier': 'carlos', - 'total_cash_purchases': total_purchases, - 'cash_taken': total_purchases, - 'cash_discrepancy': 0, - 'cash_purchases': [ - self.purchase.id, - self.purchase2.id, - self.purchase.id, - ], - } - response = self.client.post(url, data=json.dumps(data).encode('utf-8'), - content_type='application/json') + response = self._create_reconciliation_with_purchase() rawContent = response.content.decode('utf-8') content = json.loads(rawContent) @@ -226,6 +211,30 @@ class TestJarReconcliation(TestCase): self.assertEqual('2024-07-30T00:00:00Z', content['results'][0]['date_time']) + def test_get_single_reconciliation(self): + createResponse = self._create_reconciliation_with_purchase() + reconciliationId = json.loads( + createResponse.content.decode('utf-8') + )['id'] + self.assertGreater(reconciliationId, 0) + + url = f'/don_confiao/api/reconciliate_jar/{reconciliationId}/' + response = self.client.get(url, content_type='application/json') + content = json.loads( + response.content.decode('utf-8') + ) + self.assertEqual(reconciliationId, content['id']) + self.assertGreater(len(content['Sales']), 0) + self.assertIn( + self.purchase.id, + [sale['id'] for sale in content['Sales']] + ) + + self.assertIn( + 'CASH', + [sale['payment_method'] for sale in content['Sales']] + ) + def _create_simple_reconciliation(self): reconciliation = ReconciliationJar() reconciliation.date_time = "2024-07-30" @@ -235,3 +244,21 @@ class TestJarReconcliation(TestCase): reconciliation.clean() reconciliation.save() return reconciliation + + def _create_reconciliation_with_purchase(self): + url = '/don_confiao/reconciliate_jar' + total_purchases = (11 * 72500) + (27 * 72500) + data = { + 'date_time': '2024-12-02T21:07', + 'reconcilier': 'carlos', + 'total_cash_purchases': total_purchases, + 'cash_taken': total_purchases, + 'cash_discrepancy': 0, + 'cash_purchases': [ + self.purchase.id, + self.purchase2.id, + self.purchase.id, + ], + } + return self.client.post(url, data=json.dumps(data).encode('utf-8'), + content_type='application/json')