Hola
Dejando a un lado que no entiendo porque te moentas ese pollo para crear una clave cuando existen opciones mucho más simples para crear claves únicas.
Yo no veo nada raro, no entiendo el porque de la línea donde simplemente pones "$codigo" ya que si quieres una inicialización deberías asignarle un valor
Código PHP:
$codigo = ""
// o
$codigo = 0;
Yo para estos casos lo que suelo hacer es imprimir la sentencia SQL que se genera es decir cambio:
Código PHP:
$result = mysql_query("INSERT INTO codigo (id_codigo, lote, codigo, id_usuario, id_distribuidor, activa, fecha_gen, fecha_act, credito) VALUES (NULL, '$maxlote', '$codigo', NULL, NULL, '0', '$fecha_gen', NULL, '0')",$cnx);
por
Código PHP:
echo "INSERT INTO codigo (id_codigo, lote, codigo, id_usuario, id_distribuidor, activa, fecha_gen, fecha_act, credito) VALUES (NULL, '$maxlote', '$codigo', NULL, NULL, '0', '$fecha_gen', NULL, '0')"
Así puedes ver realmente que esta pasando. El punto y como que pones al final no sirve para nada.
También es muy util el "or die"
Código PHP:
$result = mysql_query("INSERT INTO codigo (id_codigo, lote, codigo, id_usuario, id_distribuidor, activa, fecha_gen, fecha_act, credito) VALUES (NULL, '$maxlote', '$codigo', NULL, NULL, '0', '$fecha_gen', NULL, '0')",$cnx) or die(mysql_error());
Con esto imprimes el posible error generado por la consulta SQL.