from django_filters import FilterSet
from .models import BoundListModel, BoundDetailModel,BoundBatchModel,OutBatchModel,BatchLogModel,OutBoundDetailModel,MaterialStatistics,OutBoundDemandModel

class OutBoundDemandFilter(FilterSet):
    class Meta:
        model = OutBoundDemandModel
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            'goods_code': ['exact', 'icontains'],
            'goods_desc': ['exact', 'icontains'],
            'goods_std': ['exact', 'icontains'],
            'goods_unit': ['exact', 'icontains'],
            'goods_qty': ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            'working': ['exact'],
            'creater': ['exact', 'icontains'],
            'create_time': ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
            'update_time':
             ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
            'is_delete': ['exact'],
        }

class MaterialStatisticsFilter(FilterSet):
    class Meta:
        model = MaterialStatistics
        fields = {
            "goods_code": ['exact', 'icontains'],
            "goods_desc": ['exact', 'icontains'],
            "goods_std": ['exact', 'icontains'],
            "goods_unit": ['exact', 'icontains'],
            "total_quantity": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
        }


class BoundListFilter(FilterSet):

    class Meta:
        model = BoundListModel
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            'bound_month': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'bound_date': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'bound_code': ['icontains', 'exact'],
            'bound_code_type': ['exact', 'icontains'],
            'bound_bs_type': ['exact', 'icontains'],
            'bound_type': ['exact', 'icontains'],
            'bound_desc' : ['icontains', 'exact'],
            'bound_department': ['exact', 'icontains'],
            'bound_status': ['exact', 'icontains'],
            'base_type': ['exact', 'gt', 'gte', 'lt', 'lte', 'in'],
            'creater': ['icontains', 'exact'],
            'openid': ['exact'],
            'is_delete': ['exact'],
            'create_time': ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
            'update_time':
             ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
            
        }


class BoundDetailFilter(FilterSet):
    class Meta:
        model = BoundDetailModel
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "detail_code" : ['icontains', 'exact'],
            "bound_list" : ['exact'],
            "bound_batch" : ['exact'],
            'status': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],

           
            'creater': ['icontains', 'exact'],
            'openid': ['exact'],
            'is_delete': ['exact'],
            'create_time':  ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
              
            'update_time': ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
        }

class BoundBatchFilter(FilterSet):
    class Meta:
        model = BoundBatchModel
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            'bound_number': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'sourced_number': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'bound_month': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],

            
            'warehouse_code': ['icontains', 'exact'],
            'warehouse_name': ['icontains','exact'],
            
            'goods_code': ['icontains', 'exact'],
            'goods_desc': ['icontains', 'exact'],
            'goods_std': ['icontains', 'exact'],
            'goods_qty': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'goods_in_qty': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'goods_in_location_qty' : ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'goods_out_qty': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'status': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'goods_weight': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'goods_total_weight': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            
            'creater': ['icontains', 'exact'],
            'openid': ['exact'],
            'is_delete': ['exact'],
            'create_time':  ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
              
            'update_time': ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],

        }
    

class OutBatchFilter(FilterSet):
    class Meta:
        model = OutBatchModel
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            'out_number': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'out_date': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'out_type': ['icontains', 'exact'],
            'out_note': ['icontains', 'exact'],

            'warehouse_code': ['icontains', 'exact'],
            'warehouse_name': ['icontains', 'exact'],

            'goods_code': ['icontains', 'exact'],
            'goods_desc': ['icontains', 'exact'],
            'goods_std': ['icontains', 'exact'],
            'goods_unit': ['icontains', 'exact'],
            'goods_qty': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'goods_out_qty': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
           
            'container_number': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'goods_weight': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'goods_total_weight': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            
            'creater': ['icontains', 'exact'],
            'openid': ['exact'],
            'is_delete': ['exact'],
            'create_time':  ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
              
            'update_time': ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in',        
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],            
        }   
class BatchlogFilter(FilterSet):
    class Meta:
        model = BatchLogModel
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            'log_type': ['icontains', 'exact'],
            'log_date' : ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',
              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in',                                                                              
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
            'batch_id': ['exact'],
            'goods_code' : ['icontains', 'exact'],
            'goods_desc' : ['icontains', 'exact'],
            'goods_qty' : ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'create_time':  ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
              
            'update_time': ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in',        
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',             
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in',              
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',              
              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],

            
        }
class OutBoundDetailFilter(FilterSet):
    class Meta:
        model = OutBoundDetailModel
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "detail_code" : ['icontains', 'exact'],
            "bound_list" : ['exact'],
            "bound_batch" : ['exact'],
            "bound_batch_number" : ['exact'],
            'status': ['exact', 'gt', 'gte', 'lt', 'lte', 'icontains','range'],
            'creater': ['icontains', 'exact'],
            'openid': ['exact'],
            'is_delete': ['exact'],
            'create_time':  ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
              
            'update_time': ['exact', 'gt', 'gte', 'lt', 'lte',
             'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__range', 'year__in', 
             'month','month__gt','month__gte','month__lt','month__lte','month__range','month__in', 
             'day', 'day__gt', 'day__gte', 'day__lt', 'day__lte', 'day__range', 'day__in',
              'week_day', 'week_day__gt', 'week_day__gte', 'week_day__lt', 'week_day__lte', 'week_day__range', 'week_day__in', 
              'hour', 'hour__gt', 'hour__gte', 'hour__lt', 'hour__lte', 'hour__range', 'hour__in',

              'date', 'date__gt', 'date__gte', 'date__lt', 'date__lte', 'date__range', 'date__in', 
              'time', 'time__gt', 'time__gte', 'time__lt', 'time__lte', 'time__range', 'time__in', 'isnull', 'in', 'range'],
        }