from django_filters import FilterSet
from .models import InboundBill, MaterialDetail ,OutboundBill ,OutMaterialDetail

class OutboundBillFilter(FilterSet):
    class Meta:
        model = OutboundBill
        fields = {
            "billId": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "number": ['exact', 'icontains'],
            "type": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "date": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "department": ['exact', 'icontains'],
            "warehouse": ['exact', 'icontains'],
            "creater": ['exact', 'icontains'],
            "note": ['exact', 'icontains'],
            "totalCount": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            "is_delete": ['exact'],
            "bound_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range']
        }

class InboundBillFilter(FilterSet):
    class Meta:
        model = InboundBill
        fields = {
            "billId": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "number": ['exact', 'icontains'],
            "type": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "date": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "department": ['exact', 'icontains'],
            "warehouse": ['exact', 'icontains'],
            "creater": ['exact', 'icontains'],
            "note": ['exact', 'icontains'],
            "totalCount": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            "is_delete": ['exact'],
            "bound_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range']
        }

class MaterialDetailFilter(FilterSet):
    class Meta:
        model = MaterialDetail
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "bound_billId": ['exact'],
            "entryIds": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "production_batch": ['exact', 'icontains'],
            "goods_code": ['exact', 'icontains'],
            "goods_name": ['exact', 'icontains'],
            "goods_std": ['exact', 'icontains'],
            "goods_weight": ['exact', 'icontains'],
            "plan_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "goods_total_weight": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "goods_unit": ['exact', 'icontains'],
            "note": ['exact', 'icontains'],
            "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            "is_delete": ['exact'],
        }

class OutMaterialDetailFilter(FilterSet):
    class Meta:
        model = OutMaterialDetail
        fields = {
            "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "bound_billId": ['exact'],
            "entryIds": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "production_batch": ['exact', 'icontains'],
            "goods_code": ['exact', 'icontains'],
            "goods_name": ['exact', 'icontains'],
            "goods_weight": ['exact', 'icontains'],
            "goods_out_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "goods_total_weight": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
            "goods_unit": ['exact', 'icontains'],
            "note": ['exact', 'icontains'],
            "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
            "is_delete": ['exact'],
        }