Show pageOld revisionsBacklinksExport to PDFFold/unfold allBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== pears.NetOwnerContactEventsSet ====== <WRAP center round info> Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. </WRAP> ===== Original SQL ===== <code 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 */ } </code> database/procedures/pears_netownercontacteventsset.txt Last modified: 2026/08/07 19:24by 127.0.0.1