No puedes usar el MAX() en una subconsulta puesta como VALUES porque no puedes leer y actualizar la tabla al mismo tiempo en la misma acción. Además ten en cuenta que la consulta en si tiene el problema de que usas MAX() y MAX() en ese caso tiene valores contradictorios: ¿Es el MAX() hasta el momento o es el MAX() de la inserción?
Se vuelve alg inconsistente.
De todos modos existe una solución, rústica, pero eficiente: Un TRIGGER que tenga un código mas o menos así:
Para usar este tipo de TRIGGER no debes enviar el valor del ID, sólo el resto de los campos, lo que implica que deben indicarse específicamente los valores que mandas a la tabla: