CREATE OR REPLACE EDITIONABLE TRIGGER "IASAPL"."WEB_FRM_MEDIC_INSERT_TR" BEFORE INSERT ON IASAPL.WEB_FRM_MEDIC REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW DECLARE secu number; idForm number default 213358; idForm2 number default 2464554; fecha_no_valida exception; hora_no_valida exception; tramo_ocupado exception; l_nFechaHora_Disponible number default 0; begin --GREG-107056 Impedir Citas Médicas a Jubilados y Alumnis if CP_PUEDE_PEDIR_CITA_MEDICA_FU(:new.nip) = 'N' then raise_application_error(-20180,'Para solicitar cita debes pertenecer a alguno de los colectivos autorizados.@@Per a sol·licitar cita has de pertànyer a algun dels col·lectius autoritzats.@@To make an appointmen you must be in an authorized group'); end if; --GRE-218317 Los estudiantes tienen un calendario específico con un horario restringido if :new.estado is null then -- Si el campo estado está vacío significa que el solicitante ha utilizado credenciales de estudiante -- Se evalua la disponibilidad frente al formulario/calendario 2 (el de estudiantes) idForm := idForm2; end if; l_nFechaHora_Disponible:=utl_citas.FechaHora_Disponible(P_WEB_FRMFORM=>idForm,P_FECHAHORA=>:new.fecha); -- Cualquier valor por encima de 0 es error if l_nFechaHora_Disponible>0 then if l_nFechaHora_Disponible=1 then raise_application_error(-20153,'tramo_ocupado'); elsif l_nFechaHora_Disponible=2 then raise_application_error(-20152,'hora_no_valida'); else raise_application_error(-20151,'fecha_no_valida'); end if; end if; if utl_citas.Supera_MaxPetiUsuario (P_FORMULARIO=>idForm,P_NIP=>:new.nip) then raise_application_error(-20153,'Cupo máximo del usuario superado'); end if; select web_frm_se.nextval into secu from dual; :new.id:=secu; :new.validado:=sysdate; :new.estado:=null; if :new.fec_alta is null then :new.fec_alta:=sysdate; end if; BEGIN if :new.nombre is null then select nombre into :new.nombre from per_personas where nip=:new.nip; end if; EXCEPTION WHEN OTHERS then null; END; -- APPS -- Citas antiguas no comprueba CitaAPP --if utl_citas.EsCitaApp(idForm) then DECLARE l_payload varchar2(400); BEGIN l_payload:='{"type":"C","subtype":"P", "unidad":{"es":"'|| utl_citas.Get_NomFrmCita(P_WEB_FRMFORM=>idForm,P_IDIOMA=>'c')||'","ca":"'|| utl_citas.Get_NomFrmCita(P_WEB_FRMFORM=>idForm,P_IDIOMA=>'v')||'","en":"'|| utl_citas.Get_NomFrmCita(P_WEB_FRMFORM=>idForm,P_IDIOMA=>'i')||'"}, "fecha":"'|| UTL_ICAL_ACCESO.FECHA_ICAL(:new.fecha)||'"}'; APPSUPV.API_PUSH_SERVICES.PUSH_MULTI_QUEUE(P_CANAL=>'citaPrevia', P_TITULO=> utl_citas.Get_NomFrmCita(P_WEB_FRMFORM=>idForm), P_MENSAJE=>'Recuerda tienes cita hoy a las '||to_char(:new.fecha,'HH24:MI')||' ('||utl_citas.Get_NomFrmCita(P_WEB_FRMFORM=>idForm)||')', P_PAYLOAD=>l_payload, P_NIP=>:new.nip, P_ID=>:new.id, P_FECHA_ENTREGA=>:new.fecha) ; EXCEPTION WHEN OTHERS then null; END; --end if; --/APPS end; / ALTER TRIGGER "IASAPL"."WEB_FRM_MEDIC_INSERT_TR" ENABLE;