from rest_framework import serializers
from .models import AsnListModel, AsnDetailModel
from utils import datasolve


class ASNListGetSerializer(serializers.ModelSerializer):
    code = serializers.CharField(read_only=True, required=False)
    asn_code = serializers.CharField(read_only=True, required=False)
    asn_status = serializers.CharField(read_only=True, required=False)
    asn_type = serializers.CharField(read_only=True, required=False)
    goods_code = serializers.CharField(read_only=True, required=False)
    goods_desc = serializers.CharField(read_only=True, required=False)
    goods_qty = serializers.IntegerField(read_only=True, required=False)
    goods_weight = serializers.FloatField(read_only=True, required=False)

    creater = serializers.CharField(read_only=True, required=False)
    create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
    update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
    class Meta:
        model = AsnListModel
        exclude = ['openid', 'is_delete', ]
        read_only_fields = ['id', 'openid', ]

class ASNListPostSerializer(serializers.ModelSerializer):
    
    openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate])
    asn_code = serializers.CharField(read_only=False,  required=False, validators=[datasolve.asn_data_validate])
    code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
    asn_status = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
    asn_type = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
    goods_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
    goods_desc = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
    goods_qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.qty_0_data_validate])
    goods_weight = serializers.FloatField(read_only=False, required=True, validators=[datasolve.qty_0_data_validate])
  
    creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
    class Meta:
        model = AsnListModel
        exclude = ['is_delete', ]
        read_only_fields = ['id', 'create_time', 'update_time', ]




class ASNDetailGetSerializer(serializers.ModelSerializer):
    asn_code = serializers.CharField(read_only=True, required=False)
    asn_status = serializers.CharField(read_only=True, required=False)
    asn_type = serializers.CharField(read_only=True, required=False)
    goods_code = serializers.CharField(read_only=True, required=False)
    goods_desc = serializers.CharField(read_only=True, required=False)
    goods_qty = serializers.IntegerField(read_only=True, required=False)
    goods_weight = serializers.FloatField(read_only=True, required=False)
    warehouse_code = serializers.CharField(read_only=True, required=False)
    warehouse_name = serializers.CharField(read_only=True, required=False)
    shelf_name = serializers.CharField(read_only=True, required=False)
    container_code = serializers.CharField(read_only=True, required=False)
    creater = serializers.CharField(read_only=True, required=False)
    create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')

    class Meta:
        model = AsnDetailModel
        exclude = ['openid', 'is_delete', ]
        read_only_fields = ['id', 'openid']

class ASNDetailPostSerializer(serializers.ModelSerializer):
    openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate])
    asn_code = serializers.CharField(read_only=False,  required=True, validators=[datasolve.data_validate])
    asn_status = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    asn_type = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    goods_code = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    goods_desc = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    goods_qty = serializers.IntegerField(read_only=False, required=False, validators=[datasolve.qty_0_data_validate])
    goods_weight = serializers.FloatField(read_only=False, required=False, validators=[datasolve.qty_0_data_validate])
    warehouse_code = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    warehouse_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    shelf_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    container_code = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
    class Meta:
        model = AsnDetailModel
        exclude = ['is_delete', ]
        read_only_fields = ['id', 'create_time', 'update_time', ]