CREATE PROCEDURE usp_guarda_bolsa_trabajo( 
	p_tipo char(1),
        p_idbolsa varchar(5) ,
	p_tipopersona varchar(5) ,
	p_contacto varchar(100) ,
	p_telefono varchar(32) ,
	p_correo varchar(255) ,
	p_traduccion varchar(5) ,
	p_tipotraduccion varchar(5) ,
	p_ididiomadeltra varchar(5) ,
	p_ididiomaaltra varchar(5) ,
	p_documentotra varchar(255) ,
	p_fechaentregatra datetime ,
	p_interpretacion varchar(5) ,
	p_tipointerpretacion varchar(5) ,
	p_ididiomadelinter varchar(5) ,
	p_ididiomaalinter varchar(5) ,
	p_eventointer varchar(255) ,
	p_fechaeventointer datetime ,
	p_horainter varchar(16) ,
	p_notaadicional text ,
	p_estadoregistro varchar(5) 
)
BEGIN

	DECLARE ls_idbolsa varchar(5);
        
        DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
	BEGIN
		-- Cancela la transacción
		rollback; 
		-- Retorna el estado
		select -1 as state, 'Error en el proceso de actualización.' as message;
	END;

	-- Iniciar Transacción
	start transaction;
	
        if (p_tipo='I') then

	select LPAD( MAX(idbolsa) + 1, 5, '0') into ls_idbolsa from ctp_bolsa_trabajo;

        insert into ctp_bolsa_trabajo(IDBOLSA,FECHAREGISTRO,FECHAMODIFICACION,TIPOPERSONA,CONTACTO,TELEFONO
        ,CORREO,TRADUCCION,TIPOTRADUCCION,IDIDIOMADELTRA,IDIDIOMAALTRA,DOCUMENTOTRA,FECHAENTREGATRA
        ,INTERPRETACION,TIPOINTERPRETACION,IDIDIOMADELINTER,IDIDIOMAALINTER,EVENTOINTER
        ,FECHAEVENTOINTER,HORAINTER,NOTAADICIONAL,ESTADOREGISTRO)
				values(ls_idbolsa,current_date,current_date,p_tipopersona,
				p_contacto,p_telefono,p_correo,p_traduccion,p_tipotraduccion,p_ididiomadeltra,
				p_ididiomaaltra,p_documentotra,p_fechaentregatra,p_interpretacion,p_tipointerpretacion,
				p_ididiomadelinter,p_ididiomaalinter,p_eventointer,p_fechaeventointer,p_horainter,
				p_notaadicional,p_estadoregistro);

        select 1 as state, 'Insertado correctamente ... ok' as message;

        elseif (p_tipo='U') then

        update ctp_bolsa_trabajo set FECHAMODIFICACION=current_date,TIPOPERSONA=p_tipopersona,CONTACTO=p_contacto,TELEFONO=p_telefono
        ,CORREO=p_correo,TRADUCCION=p_traduccion,TIPOTRADUCCION=p_tipotraduccion,IDIDIOMADELTRA=p_ididiomadeltra
        ,IDIDIOMAALTRA=p_ididiomaaltra,DOCUMENTOTRA=p_documentotra,FECHAENTREGATRA=p_fechaentregatra,INTERPRETACION=p_interpretacion
        ,TIPOINTERPRETACION=p_tipointerpretacion,IDIDIOMADELINTER=p_ididiomadelinter,IDIDIOMAALINTER=p_ididiomaalinter,EVENTOINTER=p_eventointer
        ,FECHAEVENTOINTER=p_fechaeventointer,HORAINTER=p_horainter,NOTAADICIONAL=p_notaadicional,ESTADOREGISTRO=p_estadoregistro where IDBOLSA=p_idbolsa;
        
        select 1 as state, 'Actualizado correctamente ... ok' as message;

        elseif (p_tipo='D') then   

        delete from ctp_bolsa_trabajo where IDBOLSA=p_idbolsa;
        
        select 1 as state, 'Eliminado correctamente ... ok' as message;

        end if;

	-- Confirma Transacción
	commit;

	-- Retorna el estado
	 select 1 as state, 'Proceso ok' as message;
	
 END