#90 feat(api): add payment method to sales.
This commit is contained in:
parent
75d39c6ca7
commit
2fcf884cce
@ -10,9 +10,12 @@ class SaleLineSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class SaleSerializer(serializers.ModelSerializer):
|
class SaleSerializer(serializers.ModelSerializer):
|
||||||
|
total = serializers.ReadOnlyField(source='get_total')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Sale
|
model = Sale
|
||||||
fields = ['id', 'customer', 'date', 'saleline_set']
|
fields = ['id', 'customer', 'date', 'saleline_set',
|
||||||
|
'total', 'payment_method']
|
||||||
|
|
||||||
|
|
||||||
class ProductSerializer(serializers.ModelSerializer):
|
class ProductSerializer(serializers.ModelSerializer):
|
||||||
@ -28,6 +31,8 @@ class CustomerSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class ReconciliationJarSerializer(serializers.ModelSerializer):
|
class ReconciliationJarSerializer(serializers.ModelSerializer):
|
||||||
|
Sales = SaleSerializer(many=True, read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ReconciliationJar
|
model = ReconciliationJar
|
||||||
fields = [
|
fields = [
|
||||||
@ -37,8 +42,10 @@ class ReconciliationJarSerializer(serializers.ModelSerializer):
|
|||||||
'cash_taken',
|
'cash_taken',
|
||||||
'cash_discrepancy',
|
'cash_discrepancy',
|
||||||
'total_cash_purchases',
|
'total_cash_purchases',
|
||||||
|
'Sales',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class PaymentMethodSerializer(serializers.Serializer):
|
class PaymentMethodSerializer(serializers.Serializer):
|
||||||
text = serializers.CharField()
|
text = serializers.CharField()
|
||||||
value = serializers.CharField()
|
value = serializers.CharField()
|
||||||
@ -49,6 +56,7 @@ class PaymentMethodSerializer(serializers.Serializer):
|
|||||||
'value': instance[0],
|
'value': instance[0],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class SaleForRenconciliationSerializer(serializers.Serializer):
|
class SaleForRenconciliationSerializer(serializers.Serializer):
|
||||||
id = serializers.IntegerField()
|
id = serializers.IntegerField()
|
||||||
date = serializers.DateTimeField()
|
date = serializers.DateTimeField()
|
||||||
|
@ -139,22 +139,7 @@ class TestJarReconcliation(TestCase):
|
|||||||
self.assertIn('total_cash_purchases', content['error'])
|
self.assertIn('total_cash_purchases', content['error'])
|
||||||
|
|
||||||
def test_create_reconciliation_with_purchases(self):
|
def test_create_reconciliation_with_purchases(self):
|
||||||
url = '/don_confiao/reconciliate_jar'
|
response = self._create_reconciliation_with_purchase()
|
||||||
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')
|
|
||||||
|
|
||||||
rawContent = response.content.decode('utf-8')
|
rawContent = response.content.decode('utf-8')
|
||||||
content = json.loads(rawContent)
|
content = json.loads(rawContent)
|
||||||
@ -226,6 +211,30 @@ class TestJarReconcliation(TestCase):
|
|||||||
self.assertEqual('2024-07-30T00:00:00Z',
|
self.assertEqual('2024-07-30T00:00:00Z',
|
||||||
content['results'][0]['date_time'])
|
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):
|
def _create_simple_reconciliation(self):
|
||||||
reconciliation = ReconciliationJar()
|
reconciliation = ReconciliationJar()
|
||||||
reconciliation.date_time = "2024-07-30"
|
reconciliation.date_time = "2024-07-30"
|
||||||
@ -235,3 +244,21 @@ class TestJarReconcliation(TestCase):
|
|||||||
reconciliation.clean()
|
reconciliation.clean()
|
||||||
reconciliation.save()
|
reconciliation.save()
|
||||||
return reconciliation
|
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')
|
||||||
|
Loading…
Reference in New Issue
Block a user