pears.DuplicateVacancyAndPlacement

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

CREATE FUNCTION "pears"."DuplicateVacancyAndPlacement"( 
  /* Application Maintained Function / Procedure - DO NOT EDIT*/
  IN @OldVacancyID CHAR(20),IN @NewVacancyID CHAR(20),IN @NewEmploymentID CHAR(20),IN @OldPlacementID CHAR(20) DEFAULT NULL,IN @NewPlacementID CHAR(20) DEFAULT NULL,IN @CloseOffOld CHAR(1) DEFAULT 'N' ) 
RETURNS SMALLINT
BEGIN
  DECLARE @VacancyAllowed CHAR(250);
  DECLARE @OldCandEmploymentID CHAR(20);
  DECLARE @NewCandEmploymentID CHAR(20);
  DECLARE @NewCandEmploymentCompanyID CHAR(20);
  DECLARE @ExplainStringFrom CHAR(250);
  DECLARE @ExplainStringTo CHAR(250);
  DECLARE @MovedPerson CHAR(50);
  --Check new vacancy allowed
  SET @VacancyAllowed = (SELECT "vacancyallowed"(@NewEmploymentID));
  IF @VacancyAllowed <> '' THEN RETURN(1)
  END IF;
  BEGIN atomic
    INSERT INTO "vacancy"( "VacancyID","DepartmentID","EmploymentID","Status","temp","Position","ContractRef",
      "ClientDepartment","NoOfPosts","StartDate","FinishDate","TempDeskID","StaffID","SiteName","SiteContact",
      "addr1","addr2","addr3","town","county","country","postcode","SitePhoneNumbers","Notes","OtherNotes",
      "ErNi","HolidayAllowance","Discount","Salary","Expiry","TheirRef","Currency","PayrollIdentifier",
      "TempJobTypeID","InvAddr1","InvAddr2","InvAddr3","InvTown","InvCounty","InvCountry","InvPostCode",
      "ClassCode","AnalysisCode","EntryDate","Role","CascadeDateTime","WorkMonday","WorkTuesday","WorkWednesday","WorkThursday","WorkFriday","WorkSaturday","WorkSunday","WorkStartTime","WorkNormalHours" ) 
      SELECT @NewVacancyID,"DepartmentID",@NewEmploymentID,"Status","temp","Position","ContractRef",
        "ClientDepartment","NoOfPosts","StartDate","FinishDate","TempDeskID","StaffID","SiteName","SiteContact",
        "addr1","addr2","addr3","town","county","country","postcode","SitePhoneNumbers","Notes","OtherNotes",
        "ErNi","HolidayAllowance","Discount","Salary","Expiry","TheirRef","Currency","PayrollIdentifier",
        "TempJobTypeID","InvAddr1","InvAddr2","InvAddr3","InvTown","InvCounty","InvCountry","InvPostCode",
        "ClassCode","AnalysisCode",CURRENT DATE,"Role","CascadeDateTime","WorkMonday","WorkTuesday","WorkWednesday","WorkThursday","WorkFriday","WorkSaturday","WorkSunday","WorkStartTime","WorkNormalHours"
        FROM "vacancy" WHERE "vacancyid" = @OldVacancyID; //NB Vacancy refcode inserted BY TRIGGER IN Vacancy TABLE
    -- Copy questionnaire
    INSERT INTO "tagvalue"( "taglocation","tagid","tagchoiceid","id","value","textvalue" ) 
      SELECT "taglocation","tagid","tagchoiceid",@NewVacancyID,"value","textvalue" FROM "tagvalue"
        WHERE "id" = @OldVacancyID AND "taglocation" LIKE 'V%';
    -- Copy requirements
    INSERT INTO "criterion"( "searchlocation",
      "id","critid","sourcelocation","dictionaryid",
      "tagid","tagchoiceid","notflag","matchtype","textvalue","value","uppervalue","taganytotal",
      "extravalue","extrauppervalue","extramatchtype" ) 
      SELECT "searchlocation",@NewVacancyID,"critid","sourcelocation","dictionaryid",
        "tagid","tagchoiceid","notflag","matchtype","textvalue","value","uppervalue","taganytotal",
        "extravalue","extrauppervalue","extramatchtype" FROM "criterion"
        WHERE "id" = @OldVacancyID AND "searchlocation" LIKE 'V%';
    -- Copy rates
    INSERT INTO "TempJobRate"( "TempJobRateID","VacancyID","TempPayBandID","PayRate","ChargeRate","StartDate","EndDate","Grade" ) 
      SELECT(SELECT "uniquekey"("TempJobRateID")),@NewVacancyID,"TempPayBandID","PayRate","ChargeRate","StartDate","EndDate","Grade"
        FROM "TempJobRate" WHERE "vacancyid" = @OldVacancyID;
    -- Copy T & A rules
    INSERT INTO "cardreaderoverridesettings"( "CardReaderSettingsID","Companyid","defaultshiftlength","MachineID","maxbreaklength","MaxEarlyness","MaxExtraBreakTime","MaxLateness","maxshiftlength","MinBeforeExtending","MinBeforeExtendStart","MinBreakLength","VacancyID" ) 
      SELECT "uniquekey"("VacancyID"),"Companyid","defaultshiftlength","MachineID","maxbreaklength","MaxEarlyness","MaxExtraBreakTime","MaxLateness","maxshiftlength","MinBeforeExtending","MinBeforeExtendStart","MinBreakLength",@NewVacancyID FROM "cardreaderoverridesettings"
        WHERE "vacancyid" = @OldVacancyID;
    -- Cascade Rules
    INSERT INTO "CascadeRule"( "CascadeRuleID","CompanyID","VacancyID","AgencyStoredSelectionID","CascadeHours","HoursFrom","CascadeLevel","CustomFunction","VacancyRule" ) 
      SELECT "uniquekey"("CascadeRuleID"),"CompanyID",@NewVacancyID,"AgencyStoredSelectionID","CascadeHours","HoursFrom","CascadeLevel","CustomFunction","VacancyRule"
        FROM "CascadeRule" WHERE "vacancyid" = @OldVacancyID;
    -- PLACEMENT
    IF @OldPlacementID IS NOT NULL AND @NewPlacementID IS NOT NULL THEN
      -- Candidates Employment
      SET @OldCandEmploymentID = (SELECT "EmploymentID" FROM "Placement" WHERE "PlacementID" = @OldPlacementID);
      SET @NewCandEmploymentID = "uniquekey"(@OldCandEmploymentID);
      SET @NewCandEmploymentCompanyID = (SELECT "CompanyID" FROM "Employment" WHERE "EmploymentID" = @NewEmploymentID);
      INSERT INTO "Employment"( "EmploymentID","temp","personid","companyid","startdate","leavedate","noreemploy","note","salary","position","department","Concurrent","ExtendedNotes" ) 
        SELECT @NewCandEmploymentID,"temp","personid",@NewCandEmploymentCompanyID,"startdate","leavedate","noreemploy","note","salary","position","department","Concurrent","ExtendedNotes"
          FROM "Employment" WHERE "EmploymentID" = @OldCandEmploymentID;
      -- Placement
      INSERT INTO "placement"( "placementid","placedate","employmentid","vacancyid","departmentid","staffid","temp","clientrate","temprate","note","State","RefCode","TheirRef","ContractRef","DaysPerWeek",
        "TransferBatch","Currency","TempJobTypeID","ExtendedNotes","ExpenseBenefitSchemeID","WorkMonday","WorkTuesday","WorkWednesday","WorkThursday","WorkFriday","WorkSaturday","WorkSunday","WorkNormalHours","WorkStartTime","documenttemplateid" ) 
        SELECT @NewPlacementID,"placedate",@NewCandEmploymentID,@NewVacancyID,"departmentid","staffid","temp","clientrate","temprate","note","State","RefCode","TheirRef","ContractRef","DaysPerWeek",
          "TransferBatch","Currency","TempJobTypeID","ExtendedNotes","ExpenseBenefitSchemeID","WorkMonday","WorkTuesday","WorkWednesday","WorkThursday","WorkFriday","WorkSaturday","WorkSunday","WorkNormalHours","WorkStartTime","documenttemplateid"
          FROM "Placement" WHERE "PlacementID" = @OldPlacementID;
      -- Placement Rates
      INSERT INTO "TempJobRate"( "TempJobRateID","PlacementID","TempPayBandID","PayRate","ChargeRate","StartDate","EndDate","Grade" ) 
        SELECT(SELECT "uniquekey"("TempJobRateID")),@NewPlacementID,"TempPayBandID","PayRate","ChargeRate","StartDate","EndDate","Grade"
          FROM "TempJobRate" WHERE "PlacementID" = @OldPlacementID;
      -- Placement Elements
      INSERT INTO "PlacementElement"( "PlacementElementTypeID","PlacementID","Value","Volatile" ) 
        SELECT "UniqueKey"("PlacementElementTypeID"),"PlacementID","Value","Volatile"
          FROM "PlacementElement" WHERE "PlacementID" = @OldPlacementID;
      -- Descriptive Text
      SET @ExplainStringFrom = (SELECT "string"("Company"."Name",' - ',"Person"."Name",' - ',"Vacancy"."RefCode") FROM "Vacancy" KEY JOIN "Employment" KEY JOIN("Person","Company") WHERE "Vacancy"."VacancyID" = @OldVacancyID);
      SET @ExplainStringTo = (SELECT "string"("Company"."Name",' - ',"Person"."Name",' - ',"Vacancy"."RefCode") FROM "Vacancy" KEY JOIN "Employment" KEY JOIN("Person","Company") WHERE "Vacancy"."VacancyID" = @NewVacancyID);
      SET @MovedPerson = (SELECT "Person"."Name" FROM "Person" KEY JOIN "Employment" KEY JOIN "Placement" WHERE "PlacementID" = @OldPlacementID);
      -- Close off old Placement
      IF @CloseOffOld = 'Y' THEN
        UPDATE "Employment" SET "LeaveDate" = "StartDate","ExtendedNotes" = "trim"("string"('Employment cancelled, transferred to ',@ExplainStringTo,"char"(13),"char"(13),"ExtendedNotes"))
          WHERE "EmploymentID" = @OldCandEmploymentID;
        UPDATE "Placement" SET "ExtendedNotes" = "trim"("string"('Placement cancelled, transferred to ',@ExplainStringTo,"char"(13),"char"(13),"ExtendedNotes"))
          WHERE "PlacementID" = @OldPlacementID
      END IF;
      -- Add explanatory text to new Employment & Placement
      UPDATE "Employment" SET "ExtendedNotes" = "trim"("string"('Employment transfered from ',@ExplainStringFrom,"char"(13),"char"(13),"ExtendedNotes"))
        WHERE "EmploymentID" = @NewCandEmploymentID;
      UPDATE "Placement" SET "ExtendedNotes" = "trim"("string"('Placement transfered from ',@ExplainStringFrom,"char"(13),"char"(13),"ExtendedNotes"))
        WHERE "PlacementID" = @NewPlacementID;
      -- Update Audit Trail
      CALL "AuditLog"('VACANCY',@OldVacancyID,'Placement Cancelled and moved',"string"(@ExplainStringFrom,' - ',@MovedPerson),@ExplainStringTo);
      CALL "AuditLog"('VACANCY',@NewVacancyID,'Copied Vacancy',@ExplainStringFrom,@ExplainStringTo);
      CALL "AuditLog"('PLACEMENT',@OldPlacementID,'Placement Cancelled and moved',@ExplainStringFrom,@ExplainStringTo);
      CALL "AuditLog"('PLACEMENT',@NewPlacementID,'Moved Placement',@ExplainStringFrom,@ExplainStringTo)
    // END OF placement SECTION
    END IF
  END; // END OF atomic statment
  RETURN(0)
exception
  WHEN others THEN RETURN(2)
END
  • database/functions/pears_duplicatevacancyandplacement.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1