====== pears.NetOwnerContactEventsSet ======
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
===== Original SQL =====
create procedure "pears"."NetOwnerContactEventsSet"( in "pWebUserID" char(20),in "pContactEventID" char(20) default null,in "pAction" char(1),in "pClassCode" char(5) default null,in "pPersonID" char(20) default null,in "pEmploymentID" char(20) default null,in "pVacancyID" char(20) default null,in "pEventDate" char(20) default null,in "pDescription" char(100) default null,in "pNotes" long varchar default null,in "pCallbackDate" char(20) default null,in "pOutcome" char(20) default null,in "pPriority" char(1) default null )
result( "pResult" char(250) )
begin
declare "dEventDate" char(20);
declare "dContactDate" char(10);
declare "dContactTime" time;
declare "pCallbackText" char(20);
declare "dCallbackDate" char(10);
declare "dCallbackTime" time;
declare "pStaffID" char(20);
declare "pDivisionID" char(20);
if "isnull"("pEventDate",'') <> '' then
set "dEventDate" = "IQXNetStringToDate"("left"("pEventDate",10));
set "pEventDate" = "stuff"("pEventDate",1,11,'');
set "dContactTime" = "IQXNetStringToTime"("pEventDate")
else
set "dEventDate" = "IQXNetStringToDate"("left"("now"(),10));
set "dContactTime" = null
end if;
set "dContactDate" = "dEventDate";
if "dEventDate" is null and "pAction" = 'N' then
select '4:~Invalid Event date';
return
end if;
if "isnull"("pCallbackDate",'') <> '' then
set "dCallbackDate" = "IQXNetStringToDate"("left"("pCallbackDate",10));
set "pCallbackDate" = "stuff"("pCallbackDate",1,11,'');
set "dCallbackTime" = "IQXNetStringToTime"("pCallbackDate")
else
set "dCallbackDate" = null;
set "dCallbackTime" = null
end if;
set "pStaffID" = (select "staffid" from "iqxnetuser" where "iqxnetuserid" = "pWebUserID");
set "pDivisionID" = (select "divisionid" from "staff" where "staffid" = "pStaffID");
set "pCallbackText" = (select top 1 "description" from "contactoutcome" where "contactoutcomeid" = "pOutcome");
if "pAction" not in( 'N','U','D' ) then
select '3:~Invalid Action';
return
end if;
if "isnull"("pContactEventID",'') = '' and "pAction" in( 'U','D' ) then -- must have a ContactEventID for update or delete
select '2:~pContactEventID required';
return
end if;
if "pAction" = 'N' then
if "pClassCode" is null then
select '8:~Invalid Event code';
return
end if;
if not "pClassCode" = any(select "classcode" from "contactclass" where "classcode" = "pClassCode") then
select '7:~Invalid Event code';
return
end if end if;
case "pAction"
when 'N' then
insert into "contactevent"( "contacteventid","staffid","personid","employmentid","vacancyid","contactdate","contacttime","callbackdate","callbacktime","description","classcode","notes","outcome","whoentered","divisionid","priority" ) values( "isnull"("pContactEventID","uniquekey"('x')),"pStaffID","pPersonID","pEmploymentID","pVacancyID","dContactDate","dContactTime","dCallbackDate","dCallbackTime","pDescription","pClassCode","pNotes","pOutcome","pStaffID","pDivisionID","isnull"("pPriority",1) ) ;
select '0:~Success';
return
when 'U' then -- Update record
update "contactevent" set "staffid" = "pStaffID","personid" = "isnull"("pPersonID","personid"),"employmentid" = "isnull"("pEmploymentID","employmentid"),"vacancyid" = "isnull"("pVacancyID","vacancyid"),"description" = "isnull"("pDescription","description"),"classcode" = "isnull"("pClassCode","classcode"),"notes" = "isnull"("pNotes","notes"),"outcome" = "isnull"("pOutcome","outcome"),"priority" = "isnull"("pPriority","priority") where "ContactEventID" = "pContactEventID";
if "isnull"("dCallbackDate",'2000-01-01') <> '2000-01-01' then
update "contactevent" set "callbackdate" = "dCallbackDate" where "contacteventid" = "pContactEventID"
end if;
if "isnull"("dCallbackTime",'00:00:00.000') <> '00:00:00.000' then
update "contactevent" set "callbacktime" = "dCallbackTime" where "contacteventid" = "pContactEventID"
end if;
select '0:~Success';
return
when 'D' then -- delete record
delete from "contactevent" where "contacteventid" = "pContactEventID";
select '0:~Success';
return
end case
end /* TEST
call NetTestSetup('');
delete from contactevent where contacteventid like 'TEST%';
insert into contactclass (classcode,classdescrip) on existing update values ('~~','Test Class');
select * from "NetOwnerContactEventsSet"('test.owner','TEST1','n','~~','test','test','test',dateformat(now(*),'dd/mm/yyyy HH:nn:ss'),'TestDescription','TestNote',dateadd(hh,1,now(*)),'TestOutcome',1);
expect pResult=0:~Success;
select * from contactevent where contacteventid='TEST1';
expect personid=test,vacancyid=test,employmentid=test,description=TestDescription;
expect EOF;
select * from "NetOwnerContactEventsSet"('test.owner','TEST2','Z',null,null,null,null,null,null,null,null,null,null);
expect pResult=3:*;
select * from "NetOwnerContactEventsSet"('test.owner',null,'U',null,null,null,null,null,null,null,null,null,null);
expect pResult=2:*;
select * from "NetOwnerContactEventsSet"('test.owner','TEST2','N','~~','test',null,null,'f9',null,null,null,null,null);
expect pResult=4:*;
select * from "NetOwnerContactEventsSet"('test.owner','TEST2','N',null,'test',null,null,dateformat(now(*),'dd/mm/yyyy'),null,null,null,null,null);
expect pResult=8:*;
select * from "NetOwnerContactEventsSet"('test.owner','TEST2','N','ZY','test',null,null,dateformat(now(*),'dd/mm/yyyy'),null,null,null,null,null);
expect pResult=7:*;
select * from "NetOwnerContactEventsSet"('test.owner','TEST1','U',null,null,null,null,null,'TestDescription2',null,null,null,null);
expect pResult=0:~Success;
select * from "NetOwnerContactEventsSet"('test.owner','TEST1','D',null,null,null,null,null,'null',null,null,null,null);
expect pResult=0:~Success;
select * from contactevent where contacteventid='TEST1';
expect EOF;
select * from contactevent where contacteventid='TEST1';
expect EOF;
delete from contactevent where contacteventid like 'TEST%';
*/
/* DOC
2016-08-02 PC create,edit and delete contact events for Owner
2016-11-23 PC modify date handling
2018-08-27 PC improve error handler
Tests:
Create dummy contact class
Create new record
Create record with incorrect action
Create record with invalid contact event
Create record with event date
Create record with invalid staff
Create record with null event code
Create record with incorrect event code
modify existing record
delete record
*/
go
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetOwnerContactEventsSet" IS
{create PROCEDURE pears."NetOwnerContactEventsSet"(in pWebUserID char(20),in pContactEventID char(20) default null,in pAction char(1),in pClassCode char(5) default null, in pPersonID char(20) default null,in pEmploymentID char(20) default null,in pVacancyID char(20) default null,in pEventDate char(20) default null,in pDescription char(100) default null,in pNotes long varchar default null,in pCallbackDate char(20) default null,in pOutcome char(20) default null,in pPriority char(1) default null)
result( "pResult" char(250) )
BEGIN
declare dEventDate char(20);
declare dContactDate char(10);
declare dContactTime time;
declare pCallbackText char(20);
declare dCallbackDate char(10);
declare dCallbackTime time;
declare pStaffID char(20);
declare pDivisionID char(20);
if isnull(pEventDate,'') != '' then
set dEventDate=IQXNetStringToDate(left(pEventDate,10));
set pEventDate=stuff(pEventDate,1,11,'');
set dContactTime=IQXNetStringToTime(pEventDate);
else
set dEventDate=IQXNetStringToDate(left(now(*),10));
set dContactTime=null;
end if;
set dContactDate=dEventDate;
if dEventDate is null and pAction='N' then
select '4:~Invalid Event date';
return;
end if;
if isnull(pCallbackDate,'') !='' then
set dCallbackDate=IQXNetStringToDate(left(pCallbackDate,10));
set pCallbackDate=stuff(pCallbackDate,1,11,'');
set dCallbackTime=IQXNetStringToTime(pCallbackDate);
else
set dCallbackDate=null;
set dCallbackTime=null;
end if;
set pStaffID=(select staffid from iqxnetuser where iqxnetuserid=pWebUserID);
set pDivisionID=(select divisionid from staff where staffid=pStaffID);
set pCallbackText=(select top 1 description from contactoutcome where contactoutcomeid=pOutcome);
if not pAction in ('N','U','D') then
select '3:~Invalid Action';
return;
end if;
if isnull(pContactEventID,'')='' and pAction in ('U','D') then -- must have a ContactEventID for update or delete
select '2:~pContactEventID required';
return;
end if;
if pAction='N' then
if pClassCode is null then
select '8:~Invalid Event code';
return;
end if;
if pClassCode not in (select classcode from contactclass where classcode=pClassCode) then
select '7:~Invalid Event code';
return;
end if;
end if;
case pAction
when 'N' then
insert into contactevent (contacteventid,staffid,personid,employmentid,vacancyid,contactdate,contacttime,callbackdate,callbacktime,description,classcode,notes,outcome,whoentered,divisionid,priority) values (isnull(pContactEventID,uniquekey('x')),pStaffID,pPersonID,pEmploymentID,pVacancyID,dContactDate,dContactTime,dCallbackDate,dCallbackTime,pDescription,pClassCode,pNotes,pOutcome,pStaffID,pDivisionID,isnull(pPriority,1));
select '0:~Success';
return;
when 'U' then -- Update record
update contactevent set staffid=pStaffID, personid=isnull(pPersonID,personid), employmentid=isnull(pEmploymentID,employmentid), vacancyid=isnull(pVacancyID,vacancyid), description=isnull(pDescription,description), classcode=isnull(pClassCode,classcode),notes=isnull(pNotes,notes),outcome=isnull(pOutcome,outcome),priority=isnull(pPriority,priority) where ContactEventID=pContactEventID;
if isnull(dCallbackDate,'2000-01-01') !='2000-01-01' then
update contactevent set callbackdate=dCallbackDate where contacteventid=pContactEventID;
end if;
if isnull(dCallbackTime,'00:00:00.000') !='00:00:00.000' then
update contactevent set callbacktime=dCallbackTime where contacteventid=pContactEventID;
end if;
select '0:~Success';
return
when 'D' then -- delete record
delete from contactevent where contacteventid=pContactEventID;
select '0:~Success';
return
end case;
END
/* TEST
call NetTestSetup('');
delete from contactevent where contacteventid like 'TEST%';
insert into contactclass (classcode,classdescrip) on existing update values ('~~','Test Class');
select * from "NetOwnerContactEventsSet"('test.owner','TEST1','n','~~','test','test','test',dateformat(now(*),'dd/mm/yyyy HH:nn:ss'),'TestDescription','TestNote',dateadd(hh,1,now(*)),'TestOutcome',1);
expect pResult=0:~Success;
select * from contactevent where contacteventid='TEST1';
expect personid=test,vacancyid=test,employmentid=test,description=TestDescription;
expect EOF;
select * from "NetOwnerContactEventsSet"('test.owner','TEST2','Z',null,null,null,null,null,null,null,null,null,null);
expect pResult=3:*;
select * from "NetOwnerContactEventsSet"('test.owner',null,'U',null,null,null,null,null,null,null,null,null,null);
expect pResult=2:*;
select * from "NetOwnerContactEventsSet"('test.owner','TEST2','N','~~','test',null,null,'f9',null,null,null,null,null);
expect pResult=4:*;
select * from "NetOwnerContactEventsSet"('test.owner','TEST2','N',null,'test',null,null,dateformat(now(*),'dd/mm/yyyy'),null,null,null,null,null);
expect pResult=8:*;
select * from "NetOwnerContactEventsSet"('test.owner','TEST2','N','ZY','test',null,null,dateformat(now(*),'dd/mm/yyyy'),null,null,null,null,null);
expect pResult=7:*;
select * from "NetOwnerContactEventsSet"('test.owner','TEST1','U',null,null,null,null,null,'TestDescription2',null,null,null,null);
expect pResult=0:~Success;
select * from "NetOwnerContactEventsSet"('test.owner','TEST1','D',null,null,null,null,null,'null',null,null,null,null);
expect pResult=0:~Success;
select * from contactevent where contacteventid='TEST1';
expect EOF;
select * from contactevent where contacteventid='TEST1';
expect EOF;
delete from contactevent where contacteventid like 'TEST%';
*/
/* DOC
2016-08-02 PC create,edit and delete contact events for Owner
2016-11-23 PC modify date handling
2018-08-27 PC improve error handler
Tests:
Create dummy contact class
Create new record
Create record with incorrect action
Create record with invalid contact event
Create record with event date
Create record with invalid staff
Create record with null event code
Create record with incorrect event code
modify existing record
delete record
*/
}