CREATE OR ALTER PROCEDURE USER$CLIENTS_DUBLE_FIND
(
INPCODE TYPE OF COLUMN CLIENTS.PCODE
)
RETURNS
(
PCODE TYPE OF COLUMN CLIENTS.PCODE,
SEARCH_TYPE VARCHAR(16),
CUR_CSTATUS TYPE OF COLUMN CLIENTS.CSTATUS
)
AS
BEGIN
IF (inpcode IS NULL) THEN
exit;
-- поиск по ФИО + др
search_type = 'FIO+BDATE';
FOR SELECT c.pcode, c.cstatus FROM clients p
LEFT JOIN clients c ON p.prepfullname=c.prepfullname AND p.bdate=c.bdate
WHERE p.pcode= :inpcode AND p.pcode!=c.pcode
AND c.bdate IS NOT NULL
AND c.prepfullname IS NOT NULL
INTO :pcode, :cur_cstatus do
BEGIN
suspend;
END
-- поиск по документу
search_type = 'PASP';
FOR SELECT c.pcode, c.cstatus FROM clients p
LEFT JOIN clients c ON p.PASPTYPE=c.PASPTYPE
AND UPPER(REPLACE(c.PASPSER||c.PASPNUM, ' ', ''))=
UPPER(REPLACE(p.PASPSER||p.PASPNUM, ' ', ''))
WHERE p.pcode= :inpcode AND p.pcode!=c.pcode
AND UPPER(REPLACE(c.PASPSER||c.PASPNUM, ' ', '')) != ''
INTO :pcode, :cur_cstatus do
BEGIN
suspend;
END
-- поиск по ФИО + телефон
search_type = 'FIO+PHONE';
FOR SELECT c.pcode FROM clients p
LEFT JOIN clients c ON p.prepfullname=c.prepfullname
WHERE p.pcode= :inpcode AND p.pcode!=c.pcode
AND (p.phone1 IN (c.phone1, c.phone3) AND COALESCE(p.phone1,'')!='' OR
p.phone3 IN (c.phone1, c.phone3) AND COALESCE(p.phone3,'')!='')
INTO :pcode do
BEGIN
suspend;
END
-- поиск по др + телефон
/*search_type = 'BDATE+PHONE';
for select c.pcode from clients p
left join clients c on p.bdate=c.bdate
where p.pcode= :inpcode and p.pcode!=c.pcode
and p.phone1 in (c.phone1, c.phone3)
and p.phone3 in (c.phone1, c.phone3)
into :pcode do
begin
suspend;
end*/
-- поиск по ФИО + email
search_type = 'FIO+EMAIL';
FOR SELECT c.pcode, c.cstatus FROM clients p
LEFT JOIN clients c ON p.prepfullname=c.prepfullname
AND UPPER(p.CLMAIL)=UPPER(c.CLMAIL)
AND UPPER(p.CLMAIL)!=''
WHERE p.pcode= :inpcode AND p.pcode!=c.pcode
AND POSITION(' ' IN p.clmail)=0
INTO :pcode, :cur_cstatus do
BEGIN
suspend;
END
-- поиск по др + email
search_type = 'EMAIL+BDATE';
FOR SELECT c.pcode, c.cstatus FROM clients p
LEFT JOIN clients c ON UPPER(p.CLMAIL)=UPPER(c.CLMAIL)
AND UPPER(p.CLMAIL)!=''
AND p.bdate=c.bdate
WHERE p.pcode= :inpcode AND p.pcode!=c.pcode
AND POSITION(' ' IN p.clmail)=0
INTO :pcode, :cur_cstatus do
BEGIN
suspend;
END
END