mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 01:12:08 +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__'
 |