obviamente ya te diste cuenta que postgres respeta el "case sensitive" y trabajar con campos en mayúsculas es permitido, incluso, campos con nombres que tengan espacios, también podes hacerlo, lo único que es un alto costo el trabajar con ellos...
en el INSERT INTO, encerras los nombres de los campo entre comillas, lo cual es correcto, pero en el NEW; no lo haces, y ese es tu problema.
normaliza los nombres de los campos para que no te sigas quebrando la cabeza, y de paso, talvéz puedas cambiar esos nombres por otros más "entendibles" no caigas en errores de un dba común y corriente... si puedes meter mano en la db, haz la propuesta de verdaderos nombres de campo.
otro tip: no fusiles el porcentaje de IVA, imaginate una promoción cuya atracción sea "HOY NO COBRAREMOS IVA A NUESTROS PLANES DE VUELO" actualmente, a que te ves obligado para aplicar esa propaganda?¿
otro tip: el RETURN NEW sacalo del bloque IF THEN END IF, ponelo antes del END, obviamente no te da error porque la definición del trigger que llama esta función, de seguro lo tenes sólo en BEFORE INSERT, pero si este mismo trigger lo ocupas en BEFORE UPDATE, te dará otro error que te seguirá quebrando la cabeza
