mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
 | |
| # SPDX-License-Identifier: GPL-3.0-or-later
 | |
| from django.db import transaction
 | |
| from rest_framework import serializers
 | |
| from note.api.serializers import SpecialTransactionSerializer
 | |
| 
 | |
| from ..models import Invoice, Product, RemittanceType, Remittance, SogeCredit
 | |
| 
 | |
| 
 | |
| class ProductSerializer(serializers.ModelSerializer):
 | |
|     """
 | |
|     REST API Serializer for Product types.
 | |
|     The djangorestframework plugin will analyse the model `Product` and parse all fields in the API.
 | |
|     """
 | |
| 
 | |
|     class Meta:
 | |
|         model = Product
 | |
|         fields = '__all__'
 | |
| 
 | |
| 
 | |
| class InvoiceSerializer(serializers.ModelSerializer):
 | |
|     """
 | |
|     REST API Serializer for Invoice types.
 | |
|     The djangorestframework plugin will analyse the model `Invoice` and parse all fields in the API.
 | |
|     """
 | |
|     class Meta:
 | |
|         model = Invoice
 | |
|         fields = '__all__'
 | |
|         read_only_fields = ('bde',)
 | |
| 
 | |
|     products = serializers.SerializerMethodField()
 | |
| 
 | |
|     def get_products(self, obj):
 | |
|         return serializers.ListSerializer(child=ProductSerializer())\
 | |
|             .to_representation(Product.objects.filter(invoice=obj).all())
 | |
| 
 | |
| 
 | |
| class RemittanceTypeSerializer(serializers.ModelSerializer):
 | |
|     """
 | |
|     REST API Serializer for RemittanceType types.
 | |
|     The djangorestframework plugin will analyse the model `RemittanceType` and parse all fields in the API.
 | |
|     """
 | |
| 
 | |
|     class Meta:
 | |
|         model = RemittanceType
 | |
|         fields = '__all__'
 | |
| 
 | |
| 
 | |
| class RemittanceSerializer(serializers.ModelSerializer):
 | |
|     """
 | |
|     REST API Serializer for Remittance types.
 | |
|     The djangorestframework plugin will analyse the model `Remittance` and parse all fields in the API.
 | |
|     """
 | |
| 
 | |
|     transactions = serializers.SerializerMethodField()
 | |
| 
 | |
|     class Meta:
 | |
|         model = Remittance
 | |
|         fields = '__all__'
 | |
| 
 | |
|     def get_transactions(self, obj):
 | |
|         return serializers.ListSerializer(child=SpecialTransactionSerializer()).to_representation(obj.transactions)
 | |
| 
 | |
| 
 | |
| class SogeCreditSerializer(serializers.ModelSerializer):
 | |
|     """
 | |
|     REST API Serializer for SogeCredit types.
 | |
|     The djangorestframework plugin will analyse the model `SogeCredit` and parse all fields in the API.
 | |
|     """
 | |
| 
 | |
|     @transaction.atomic
 | |
|     def save(self, **kwargs):
 | |
|         # Update soge transactions after creating a credit
 | |
|         instance = super().save(**kwargs)
 | |
|         instance.update_transactions()
 | |
|         instance.save()
 | |
|         return instance
 | |
| 
 | |
|     class Meta:
 | |
|         model = SogeCredit
 | |
|         fields = '__all__'
 |