from django.contrib import admin
from .models import CategoriaInsumo, ItemEstoque, MovimentacaoEstoque


@admin.register(CategoriaInsumo)
class CategoriaInsumoAdmin(admin.ModelAdmin):
    list_display = ('nome', 'descricao')
    search_fields = ('nome',)
    ordering = ('nome',)


@admin.register(ItemEstoque)
class ItemEstoqueAdmin(admin.ModelAdmin):
    list_display = (
        'nome', 'categoria', 'quantidade', 'unidade_medida',
        'localizacao', 'data_validade', 'fornecedor', 'custo_unitario'
    )
    list_filter = ('categoria', 'unidade_medida', 'fornecedor')
    search_fields = ('nome', 'categoria__nome', 'fornecedor__nome_fantasia')
    autocomplete_fields = ['categoria', 'fornecedor']
    fieldsets = (
        ('Informações do Item', {
            'fields': ('nome', 'categoria', 'quantidade', 'unidade_medida', 'custo_unitario')
        }),
        ('Localização e Validade', {
            'fields': ('localizacao', 'data_validade')
        }),
        ('Fornecedor e Notas', {
            'fields': ('fornecedor', 'notas')
        }),
    )


@admin.register(MovimentacaoEstoque)
class MovimentacaoEstoqueAdmin(admin.ModelAdmin):
    list_display = (
        'item', 'tipo', 'quantidade', 'data', 'responsavel', 'observacoes'
    )
    list_filter = ('tipo', 'data', 'responsavel')
    search_fields = ('item__nome', 'responsavel__username')
    autocomplete_fields = ['item', 'responsavel']
    readonly_fields = ('data',)

    def has_change_permission(self, request, obj=None):
        return False  # Bloqueia edição (registro histórico)

    def has_delete_permission(self, request, obj=None):
        return False  # Bloqueia exclusão (registro histórico)
