BD.FUNC.ACD FUNC LLAMAME CREAR SIN INTENTO

De VIVAitwiki
Ir a la navegaciónIr a la búsqueda

PARÁMETROS

USE `nimitz`;

DROP function IF EXISTS `nimitz`.`ACD_FUNC_LLAMAME_CREAR_SIN_INTENTO`;

DELIMITER $$

USE `nimitz`$$


CREATE DEFINER=`adminNimitz`@`%` FUNCTION `ACD_FUNC_LLAMAME_CREAR_SIN_INTENTO`(

PAR_HORA_INTENTO DATETIME,

PAR_ID_LISTA_LLAMAMES INT,

PAR_COD_CLIENTE VARCHAR(32),

PAR_NOMBRE VARCHAR(45),

PAR_APELLIDO1 VARCHAR(45),

PAR_APELLIDO2 VARCHAR(45),

PAR_EMPRESA VARCHAR(45),

PAR_DIRECCION_1 VARCHAR(45),

PAR_DIRECCION_2 VARCHAR(45),

PAR_CODIGO_POSTAL VARCHAR(8),

PAR_LOCALIDAD VARCHAR(45),

PAR_PROVINCIA VARCHAR(45),

PAR_ID_PAIS INT,

PAR_EMAIL VARCHAR(45),

PAR_DESTINO VARCHAR(45),

PAR_SEXO INT,

PAR_ID_IDIOMA INT,

PAR_TRATAMIENTO INT,

PAR_OPCIONAL1_INT INT,

PAR_OPCIONAL2_INT INT,

PAR_OPCIONAL3_INT INT,

PAR_OPCIONAL4_INT INT,

PAR_OPCIONAL1_CAD VARCHAR(64),

PAR_OPCIONAL2_CAD VARCHAR(64),

PAR_OPCIONAL3_CAD VARCHAR(64),

PAR_OPCIONAL4_CAD VARCHAR(64)

) RETURNS varchar(32) CHARSET utf8


MODIFIES SQL DATA


DETERMINISTIC

begin

declare VAR_NO_HAY BOOLEAN;

declare VAR_HORA_INTENTO DATETIME;

declare VAR_ID_CAMPANNA INT;

declare VAR_TIPO_CANAL INT;

declare VAR_SEGS_LIMITE INT;

declare VAR_PRIORIDAD INT;

declare VAR_CAMPANNA_ACTIVA INT;

declare VAR_CAMPANNA_NO_USAR INT;

declare VAR_ID_LLAMAME INT;

declare VAR_CONTADOR INT;

declare SQL_LISTA_LLAMAMES CURSOR for

select C.`ID`,L.`E_TIPO_CANAL`,L.`N_SEGS_LIMITE`,L.`N_PRIORIDAD`,C.`B_ACTIVA`,C.`B_NO_USAR`

from `ACD_LISTAS_LLAMAMES` as L

left join `ACD_CAMPANNAS` as C on L.`ID_CAMPANNA`=C.`ID`

where L.`ID`=PAR_ID_LISTA_LLAMAMES and L.`B_NO_USAR`=0;

declare SQL_NUM_INTENTOS CURSOR for

select DI.`ID`

from DAT_INTENTOS_MARCADOR as DI

inner join DAT_LLAMAMES as DL

on DL.`ID` = DI.`ID_LLAMAME` and DI.`ID_LLAMAME` is not null

where DI.`C_DESTINO`=CONVERT(PAR_DESTINO using utf8) collate utf8_spanish_ci and DI.`E_ESTADO_INTENTO`<110 or DI.`C_DESTINO`=CONVERT(PAR_DESTINO using utf8) collate utf8_spanish_ci and DI.`E_ESTADO_INTENTO`=110 and DL.`E_TIPO_COMPLETADO`=300;

declare CONTINUE HANDLER FOR NOT FOUND set VAR_NO_HAY=TRUE;

declare EXIT HANDLER FOR SQLEXCEPTION


begin

return 'SQL_ERROR';

end;


if PAR_DESTINO IS NULL

then return 'PAR_DESTINO nulo'; end if;

if PAR_DESTINO=

then return 'PAR_DESTINO vacio';

end if;

set VAR_NO_HAY=FALSE;

open SQL_NUM_INTENTOS;

fetch SQL_NUM_INTENTOS into VAR_CONTADOR;

close SQL_NUM_INTENTOS;

if VAR_NO_HAY=FALSE then return 'Existen intentos'; end if;


set VAR_NO_HAY=FALSE;

open SQL_LISTA_LLAMAMES;

fetch SQL_LISTA_LLAMAMES into VAR_ID_CAMPANNA,VAR_TIPO_CANAL,VAR_SEGS_LIMITE,VAR_PRIORIDAD,VAR_CAMPANNA_ACTIVA,VAR_CAMPANNA_NO_USAR;

close SQL_LISTA_LLAMAMES;

if VAR_NO_HAY then return 'No existe ID_LISTA_LLAMAMES'; end if;

if (VAR_ID_CAMPANNA is NULL) or (VAR_ID_CAMPANNA=0) then return 'No hay CAMPANNA'; end if;

if (VAR_CAMPANNA_ACTIVA is NULL) or (VAR_CAMPANNA_ACTIVA=0) or (VAR_CAMPANNA_NO_USAR is NULL) or (VAR_CAMPANNA_NO_USAR<>0) then return 'CAMPANNA cerrada'; end if;

if PAR_HORA_INTENTO is NULL then set VAR_HORA_INTENTO = Now(); else set VAR_HORA_INTENTO = PAR_HORA_INTENTO; end if;

insert into `DAT_LLAMAMES`

( `D_HORA_INI`,

`ID_LISTA_LLAMAMES`,

`C_COD_CLIENTE`,

`C_NOMBRE`,

`C_APELLIDO1`,

`C_APELLIDO2`,

`C_EMPRESA`,

`C_DIRECCION_1`,

`C_DIRECCION_2`,

`C_CODIGO_POSTAL`,

`C_LOCALIDAD`,

`C_PROVINCIA`,

`ID_PAIS`,

`E_TIPO_CANAL`,

`C_EMAIL`,

`C_DESTINO`,

`E_SEXO`,

`ID_IDIOMA`,

`E_TRATAMIENTO`,

`N_OPCIONAL1_INT`,

`N_OPCIONAL2_INT`,

`N_OPCIONAL3_INT`,

`N_OPCIONAL4_INT`,

`C_OPCIONAL1_CAD`,

`C_OPCIONAL2_CAD`,

`C_OPCIONAL3_CAD`,

`C_OPCIONAL4_CAD`,

`E_TIPO_COMPLETADO`,

`B_INTENTO_EN_EJECUCION`

)

values

( VAR_HORA_INTENTO,

PAR_ID_LISTA_LLAMAMES,

PAR_COD_CLIENTE,

PAR_NOMBRE,

PAR_APELLIDO1,

PAR_APELLIDO2,

PAR_EMPRESA,

PAR_DIRECCION_1,

PAR_DIRECCION_2,

PAR_CODIGO_POSTAL,

PAR_LOCALIDAD,

PAR_PROVINCIA,

PAR_ID_PAIS,

VAR_TIPO_CANAL,

PAR_EMAIL,

PAR_DESTINO,

PAR_SEXO,

PAR_ID_IDIOMA,

PAR_TRATAMIENTO,

PAR_OPCIONAL1_INT,

PAR_OPCIONAL2_INT,

PAR_OPCIONAL3_INT,

PAR_OPCIONAL4_INT,

PAR_OPCIONAL1_CAD,

PAR_OPCIONAL2_CAD,

PAR_OPCIONAL3_CAD,

PAR_OPCIONAL4_CAD,

0,

1 );


set VAR_ID_LLAMAME = last_insert_id();

insert into `DAT_INTENTOS_MARCADOR` ( `D_HORA_PROXIMA`,

`D_HORA_LIMITE`,

`D_HORA_ULTIMA`,

`ID_CAMPANNA`,

`E_ORIGEN_INTENTO`,

`ID_LLAMAME`,

`E_TIPO_CANAL`,

`C_DESTINO`,

`C_COD_CLIENTE`,

`N_PRIORIDAD`,

`E_ESTADO_INTENTO`,

`E_TIPO_COMPLETADO`


)


values

(

VAR_HORA_INTENTO,

DATE_ADD(VAR_HORA_INTENTO, interval VAR_SEGS_LIMITE SECOND),

Now(),

VAR_ID_CAMPANNA,

20,

VAR_ID_LLAMAME,

VAR_TIPO_CANAL,

PAR_DESTINO,

PAR_COD_CLIENTE,

VAR_PRIORIDAD,

20,

0 );


return NULL;


end$$

DELIMITER ;