/** * Validação de CNPJ (PHP) * Baseado no algoritmo de validação de CNPJ. */ function validar_cnpj($cnpj) { // Remove caracteres não numéricos $cnpj = preg_replace("/[^0-9]/", "", $cnpj); // Verifica se o CNPJ tem 14 dígitos if (strlen($cnpj) != 14) { return false; } // Verifica se todos os dígitos são iguais (ex: 11.111.111/1111-11) - inválido if (preg_match("/(.)\1{13}/", $cnpj)) { return false; } // Valida os dois dígitos verificadores for ($i = 0; $i < 2; $i++) { $soma = 0; $peso = ($i == 0) ? 5 : 6; for ($j = 0; $j < 12 + $i; $j++) { $soma += $cnpj[$j] * $peso; $peso = ($peso == 2) ? 9 : $peso - 1; } $digito = $soma % 11; $digito = ($digito < 2) ? 0 : 11 - $digito; if ($cnpj[12 + $i] != $digito) { return false; } } return true; } /** * Formatação e Validação de Placa (PHP) * Garante letras maiúsculas e verifica formatos (antigo e Mercosul). */ function formatar_e_validar_placa($placa) { $placa = strtoupper(trim($placa)); // Remove caracteres que não sejam letras ou números $placa_limpa = preg_replace("/[^A-Z0-9]/", "", $placa); // Formato Mercosul (3 letras, 1 número, 1 letra, 2 números) ou Antigo (3 letras, 4 números) if (preg_match("/^[A-Z]{3}[0-9][A-Z][0-9]{2}$/", $placa_limpa) || preg_match("/^[A-Z]{3}[0-9]{4}$/", $placa_limpa)) { return $placa_limpa; } return false; // Placa inválida } /** * Calcula a diferença entre duas horas no formato HH:MM e retorna em minutos. */ function calcular_diferenca_horas_em_minutos($hora_inicio, $hora_fim) { if (empty($hora_inicio) || empty($hora_fim)) { return 0; } $inicio = strtotime($hora_inicio); $fim = strtotime($hora_fim); if ($fim < $inicio) { // Considera virada de dia se a hora final for menor que a inicial $fim += 24 * 60 * 60; // Adiciona 24 horas } return round(abs($fim - $inicio) / 60); // Diferença em minutos } /** * Converte minutos para o formato HH:MM. */ function minutos_para_hhmm($minutos) { if (!is_numeric($minutos) || $minutos < 0) { return '00:00'; } $horas = floor($minutos / 60); $min = $minutos % 60; return sprintf('%02d:%02d', $horas, $min); } /** * Calcula a produtividade em porcentagem. */ function calcular_produtividade($meta_tempo_minutos, $tempo_real_minutos) { if ($tempo_real_minutos <= 0) { return 0.00; // Evita divisão por zero } return round(($meta_tempo_minutos / $tempo_real_minutos) * 100, 2); } /** * Formata um valor monetário para exibição. */ function formatar_moeda($valor) { return "R$ " . number_format($valor, 2, ",", "."); } Login | Gestão Logística

© 2026 Gestão Logística