document.addEventListener('DOMContentLoaded', function() {
    console.log('Carregando script vendas.js...');
    
    // Funções de validação e formatação de datas
    function validarData(data) {
        if (!data) return false;
        
        const dataObj = new Date(data);
        if (isNaN(dataObj.getTime())) return false;
        
        const hoje = new Date();
        hoje.setHours(0, 0, 0, 0);
        
        return dataObj <= hoje;
    }

    function formatarData(data) {
        if (!data) return '';
        
        const dataObj = new Date(data);
        if (isNaN(dataObj.getTime())) return '';
        
        return dataObj.toLocaleDateString('pt-BR');
    }

    // Configurar campos de data
    const camposData = document.querySelectorAll('input[type="date"]');
    camposData.forEach(campo => {
        // Definir data máxima como hoje
        const hoje = new Date().toISOString().split('T')[0];
        campo.setAttribute('max', hoje);
        
        campo.addEventListener('change', function() {
            if (!validarData(this.value)) {
                this.setCustomValidity('Data inválida ou futura');
                this.classList.add('is-invalid');
            } else {
                this.setCustomValidity('');
                this.classList.remove('is-invalid');
            }
        });
    });

    // Configurar tabela de vendas
    const tabelaVendas = $('#vendasTable').DataTable({
        language: {
            url: '//cdn.datatables.net/plug-ins/1.13.7/i18n/pt-BR.json'
        },
        columnDefs: [
            {
                targets: 3, // Coluna de data
                type: 'date-br',
                render: function(data, type, row) {
                    if (type === 'sort') {
                        return data.split('/').reverse().join('');
                    }
                    return data;
                }
            },
            {
                targets: 2, // Coluna de valor
                type: 'numeric',
                render: function(data, type, row) {
                    if (type === 'sort') {
                        return parseFloat(data.replace('R$ ', '').replace(',', '.'));
                    }
                    return data;
                }
            },
            { targets: -1, orderable: false } // Coluna de ações
        ],
        order: [[3, 'desc']] // Ordenar por data decrescente por padrão
    });

    // Atualizar valor total ao mudar quantidade ou material
    const campoQuantidade = document.getElementById('quantidade');
    const campoMaterial = document.getElementById('material_id');
    const campoValorTotal = document.getElementById('valor_total');

    function atualizarValorTotal() {
        if (!campoQuantidade || !campoMaterial || !campoValorTotal) return;

        const quantidade = parseInt(campoQuantidade.value) || 0;
        const materialSelecionado = campoMaterial.options[campoMaterial.selectedIndex];
        const preco = materialSelecionado ? parseFloat(materialSelecionado.dataset.preco) || 0 : 0;

        campoValorTotal.value = (quantidade * preco).toFixed(2);
    }

    if (campoQuantidade) {
        campoQuantidade.addEventListener('change', atualizarValorTotal);
    }
    if (campoMaterial) {
        campoMaterial.addEventListener('change', atualizarValorTotal);
    }

    // Configurar modal de edição
    const modalEditarVenda = document.getElementById('modalEditarVenda');
    if (modalEditarVenda) {
        modalEditarVenda.addEventListener('show.bs.modal', function(event) {
            const button = event.relatedTarget;
            if (!button) return;

            const vendaId = button.getAttribute('data-venda-id');
            const militanteId = button.getAttribute('data-militante-id');
            const materialId = button.getAttribute('data-material-id');
            const quantidade = button.getAttribute('data-quantidade');
            const valorTotal = button.getAttribute('data-valor-total');
            const dataVenda = button.getAttribute('data-data-venda');

            document.getElementById('editVendaId').value = vendaId;
            document.getElementById('editMilitanteId').value = militanteId;
            document.getElementById('editMaterialId').value = materialId;
            document.getElementById('editQuantidade').value = quantidade;
            document.getElementById('editValorTotal').value = valorTotal;
            document.getElementById('editDataVenda').value = dataVenda;
        });
    }
}); 