-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Trigger de INSERT: tia_mdp_personas_documentos
-- AFTER INSERT
-- Tabla: mdp_personas_documentos
-- Version: 3.0.0
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- DROP FUNCTION ftia_mdp_personas_documentos ();
CREATE OR REPLACE FUNCTION ftia_mdp_personas_documentos () RETURNS trigger AS 
$BODY$
DECLARE 
  cnt smallint;   
  _documento integer;
  _orden1 smallint;
  _orden2 smallint;
BEGIN
   -- Cambio el documento principal de la persona
   _documento := NULL;
   SELECT documento_principal INTO _documento
     FROM mdp_personas
     WHERE persona = NEW.persona;
   
   IF _documento IS NULL THEN
      -- Actualizo el documento principal de la persona.
      UPDATE mdp_personas 
         SET documento_principal = NEW.documento
       WHERE persona = NEW.persona;
   ELSE
     -- Ya existe otro documento de la persona, veo si este es de mayor prioridad que el anterior.    
     SELECT mdp_tipo_documento.orden_principal INTO _orden1
       FROM mdp_tipo_documento 
       WHERE mdp_tipo_documento.tipo_documento = NEW.tipo_documento;

     SELECT mdp_tipo_documento.orden_principal INTO _orden2
       FROM mdp_personas_documentos, 
            mdp_tipo_documento 
       WHERE mdp_personas_documentos.documento = _documento
         AND mdp_tipo_documento.tipo_documento = mdp_personas_documentos.tipo_documento;
       
     IF _orden1 < _orden2 THEN
      -- Actualizo el documento principal de la persona.
      UPDATE mdp_personas 
         SET documento_principal = NEW.documento
       WHERE persona = NEW.persona;
     END IF;  
   END IF;   
   

   RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql';


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Trigger de INSERT sobre mdp_personas_documentos
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- DROP TRIGGER tia_mdp_personas_documentos ON mdp_personas_documentos RESTRICT;
CREATE TRIGGER tia_mdp_personas_documentos
       AFTER INSERT ON mdp_personas_documentos 
       FOR EACH ROW EXECUTE PROCEDURE ftia_mdp_personas_documentos();

