CREATE EXCEPTION ECCP_FROZENBUTEMPTY 'You cannot close the Period on an empty frozen dataset.';

COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures */

ALTER PROCEDURE CLOSEPERIOD 
(
  VPAYSESDEFKEY INTEGER
)
RETURNS
(
  CLOSESUCCESSFUL CHAR(1)
)
AS
declare variable CountInFrozen     integer;
declare variable lowrkdat date;
declare variable perclsdel       char(1);
declare variable lodeplab    varchar(15);
declare variable hideplab    varchar(15);
declare variable loempmaslab    varchar(15);
declare variable hiempmaslab    varchar(15);
declare variable setsuccessful   char(1);
declare variable epdkey integer;
declare variable ivdayperper     integer;
declare variable calcsuccessful char(1);
declare variable deletesuccessful char(1);
declare variable hismaskey           INTEGER;
declare variable PAYSESKEY           INTEGER;
declare variable PERNUM              INTEGER;
declare variable PERENDDAT           DATE;
declare variable curperdat           DATE;
declare variable ccpkey              INTEGER;
declare variable empmaskey           INTEGER;
declare variable EmpHidrec           CHAR(1);
declare variable EMPMASLAB           VARCHAR(15);
declare variable EMPMASBDG           VARCHAR(15);
declare variable EMPMASLNM           VARCHAR(30);
declare variable EMPMASFNM           VARCHAR(30);
declare variable EMPMASMNM           VARCHAR(30);
declare variable SOCSECNO            VARCHAR(30);
declare variable EMPMASPFMKEY        INTEGER;
declare variable SHFKEY              INTEGER;
declare variable SHFLAB              VARCHAR(15);
declare variable SHFDES              VARCHAR(30);
declare variable PRMVAL              NUMERIC(15,4);
declare variable PRMVALPCTTF         CHAR(1);
declare variable USEINOVTTF          CHAR(1);
declare variable HOMJOBKEY           INTEGER;
declare variable HOMJOBLAB           VARCHAR(15);
declare variable HOMJOBDES           VARCHAR(30);
declare variable HOMJOBHPTKEY        INTEGER;
declare variable HOMJOBDIRTF         CHAR(1);
declare variable HOMJOBOFFSTD        CHAR(1);
declare variable HOMJOBINCMINKEY     INTEGER;
declare variable HOMJOBEMPTMCKEY     INTEGER;
declare variable HOMJOBBONELIINDTF   CHAR(1);
declare variable HOMJOBBONELIMODTF   CHAR(1);
declare variable HOMJOBBONELIDEPTF   CHAR(1);
declare variable HOMJOBBONELIPLNTF   CHAR(1);
declare variable HOMJOBCLSKEY        INTEGER;
declare variable HOMJOBCLSLAB        VARCHAR(15);
declare variable HOMJOBCLSDES        VARCHAR(30);
declare variable HOMJOBCLSPFMKEY     INTEGER;
declare variable HOMMODKEY           INTEGER;
declare variable HOMMODLAB           VARCHAR(15);
declare variable HOMMODDES           VARCHAR(30);
declare variable HOMDEPKEY           INTEGER;
declare variable HOMDEPLAB           VARCHAR(15);
declare variable HOMDEPDES           VARCHAR(30);
declare variable PAYSESDEFKEY        INTEGER;
declare variable PAYSESDEFLAB        VARCHAR(15);
declare variable PAYSESDEFDES        VARCHAR(30);
declare variable REPTIMWRKFAC        NUMERIC(15,4);
declare variable REPTIKTIMFAC        NUMERIC(15,4);
declare variable REPTIKUNSFAC        NUMERIC(15,4);
declare variable HOMPLNKEY           INTEGER;
declare variable HOMPLNLAB           VARCHAR(15);
declare variable HOMPLNDES           VARCHAR(30);
declare variable MGRKEY              INTEGER;
declare variable MGRLAB              VARCHAR(15);
declare variable MGRLNM              VARCHAR(30);
declare variable PFMKEY              INTEGER;
declare variable PFMLAB              VARCHAR(15);
declare variable PFMDES              VARCHAR(30);
declare variable WAGUNSKEY           INTEGER;
declare variable STDFRMYN            CHAR(1);
declare variable OVTMET              CHAR(3);
declare variable MUPMET              CHAR(3);
declare variable OVTTHRYN            CHAR(1);
declare variable OVTTHRMET           CHAR(3);
declare variable OVTTHRVAL           NUMERIC(15,4);
declare variable OVTMUL              NUMERIC(15,4);
declare variable OVT2THRVAL          NUMERIC(15,4);
declare variable OVT2MUL             NUMERIC(15,4);
declare variable homshfprmtf         CHAR(1);
declare variable OFFSTDOVTRAT        CHAR(3);
declare variable INCMINKEY           INTEGER;
declare variable INCMINLAB           VARCHAR(15);
declare variable INCMINDES           VARCHAR(30);
declare variable INCMINVAL           NUMERIC(15,4);
declare variable HRYHPTKEY           INTEGER;
declare variable HRYLAB              VARCHAR(15);
declare variable HRYDES              VARCHAR(30);
declare variable HRYREGRAT           NUMERIC(15,4);
declare variable HRYOVTRAT           NUMERIC(15,4);
declare variable HRYOVT2RAT          NUMERIC(15,4);
declare variable TMCKEY              INTEGER;
declare variable TMCLAB              VARCHAR(15);
declare variable TMCDES              VARCHAR(30);
declare variable TMCVAL              NUMERIC(15,4);
declare variable CTYKEY              INTEGER;
declare variable CTYLAB              VARCHAR(15);
declare variable CTYDES              VARCHAR(30);
declare variable EVECURKEY           INTEGER;
declare variable WRKDAT              DATE;
declare variable wrkdatint           INTEGER;
declare variable EVECURRNK           INTEGER;
declare variable TOTTIM              INTEGER;
declare variable TPSTIKTOTUNS        INTEGER;
declare variable TPSTIKTOTBUN        INTEGER;
declare variable TPSTIKTOTCUR        NUMERIC(15,4);
declare variable TPSTIKTOTTIM        NUMERIC(15,4);
declare variable TPSTIKCURERN        NUMERIC(15,4);
declare variable TPSTIKTIMERN        NUMERIC(15,4);
declare variable TPSTIKJOBCURERN     NUMERIC(15,4);
declare variable TPSTIKJOBTIMERN     NUMERIC(15,4);
declare variable TPSTIKOPRCURERN     NUMERIC(15,4);
declare variable TPSTIKOPRTIMERN     NUMERIC(15,4);
declare variable GENTIKTOTUNS        NUMERIC(15,4);
declare variable GENTIKTOTTIK        INTEGER;
declare variable GENTIKTOTCUR        NUMERIC(15,4);
declare variable GENTIKTOTTIM        NUMERIC(15,4);
declare variable GENTIKCURERN        NUMERIC(15,4);
declare variable GENTIKTIMERN        NUMERIC(15,4);
declare variable GENTIKJOBCURERN     NUMERIC(15,4);
declare variable GENTIKJOBTIMERN     NUMERIC(15,4);
declare variable GENTIKOPRCURERN     NUMERIC(15,4);
declare variable GENTIKOPRTIMERN     NUMERIC(15,4);
declare variable ADJTOTADJ           INTEGER;
declare variable ADJTOTCUR           NUMERIC(15,4);
declare variable ADJTOTTIM           NUMERIC(15,4);
declare variable ADJTOTPAY           NUMERIC(15,4);
declare variable ADJCURERN           NUMERIC(15,4);
declare variable ADJTIMERN           NUMERIC(15,4);
declare variable ADJJOBCURERN        NUMERIC(15,4);
declare variable ADJJOBTIMERN        NUMERIC(15,4);
declare variable ADJOPRCURERN        NUMERIC(15,4);
declare variable ADJOPRTIMERN        NUMERIC(15,4);
declare variable PayTpsCurErn        NUMERIC(15,4);
declare variable PayGenCurErn        NUMERIC(15,4);
declare variable PayAdjCurErn        NUMERIC(15,4);
declare variable PayTpsTimErn        NUMERIC(15,4);
declare variable PayGenTimErn        NUMERIC(15,4);
declare variable PayAdjTimErn        NUMERIC(15,4);
declare variable EngTpsCurErn        NUMERIC(15,4);
declare variable EngGenCurErn        NUMERIC(15,4);
declare variable EngAdjCurErn        NUMERIC(15,4);
declare variable EngTpsTimErn        NUMERIC(15,4);
declare variable EngGenTimErn        NUMERIC(15,4);
declare variable EngAdjTimErn        NUMERIC(15,4);
declare variable PayUseTimValTF      CHAR(1);
declare variable EngUseTimValTF      CHAR(1);
declare variable PayTmcJobTF         CHAR(1);
declare variable EngTMCjobTF         CHAR(1);
declare variable hptcoeff            NUMERIC(15,4);
declare variable tmccoeff            NUMERIC(15,4);
declare variable incmincoeff         NUMERIC(15,4);
declare variable ernratcoeff         NUMERIC(15,4);
declare variable EVEJOBKEY           INTEGER;
declare variable EVEJOBLAB           VARCHAR(15);
declare variable EVEJOBDES           VARCHAR(30);
declare variable EVEJOBDIRTF         CHAR(1);
declare variable EVEJOBOFFSTD        CHAR(1);
declare variable EveJobHptKey        INTEGER;
declare variable EVEJOBINCMINKEY     INTEGER;
declare variable EVEJOBINCMINLAB     VARCHAR(15);
declare variable EVEJOBINCMINdes     VARCHAR(30);
declare variable EVEJOBINCMINVAL     NUMERIC(15,4);
declare variable EVEJOBEMPTMCKEY     INTEGER;
declare variable EVEJOBEMPTMCLAB     VARCHAR(15);
declare variable EVEJOBEMPTMCdes     VARCHAR(30);
declare variable EVEJOBEMPTMCVAL     NUMERIC(15,4);
declare variable evejobmupsetkey     INTEGER;
declare variable evejobmupsetlab     VARCHAR(15);
declare variable evejobmupsetdes     VARCHAR(30);
declare variable evemupmet           CHAR(3);
declare variable EVEJOBPAYYN         CHAR(1);
declare variable EVEJOBWRKYN         CHAR(1);
declare variable EVEJOBREGOTHNON     CHAR(1);
declare variable EVEJOBOVTELG        CHAR(1);
declare variable EVEJOBBONELIINDTF   CHAR(1);
declare variable EVEJOBBONELIMODTF   CHAR(1);
declare variable EVEJOBBONELIDEPTF   CHAR(1);
declare variable EVEJOBBONELIPLNTF   CHAR(1);
declare variable EVEJOBBONCALINDTF   CHAR(1);
declare variable EVEJOBBONCALMODTF   CHAR(1);
declare variable EVEJOBBONCALDEPTF   CHAR(1);
declare variable EVEJOBBONCALPLNTF   CHAR(1);
declare variable EVEJOBCLSKEY        INTEGER;
declare variable EVEJOBCLSLAB        VARCHAR(15);
declare variable EVEJOBCLSDES        VARCHAR(30);
declare variable EVEJOBCLSPFMKEY     INTEGER;
declare variable EVEMODKEY           INTEGER;
declare variable EVEMODLAB           VARCHAR(15);
declare variable EVEMODDES           VARCHAR(30);
declare variable EVEDEPKEY           INTEGER;
declare variable EVEDEPLAB           VARCHAR(15);
declare variable EVEDEPDES           VARCHAR(30);
declare variable EVEMCHKEY           INTEGER;
declare variable EVEMCHLAB           VARCHAR(15);
declare variable EVEMCHDES           VARCHAR(30);
declare variable EVEMCHGRPKEY        INTEGER;
declare variable EVEMCHEFF           NUMERIC(15,4);
declare variable EVESHFKEY           INTEGER;
declare variable EVESHFLAB           VARCHAR(15);
declare variable EVESHFDES           VARCHAR(30);
declare variable EVEPRMVAL           NUMERIC(15,4);
declare variable EVEPRMVALPCTTF      CHAR(1);
declare variable EVEDVRTSHF          NUMERIC(15,4);
declare variable EVEHRYHPTKEY        INTEGER;
declare variable EVEHRYLAB           VARCHAR(15);
declare variable EVEHRYDES           VARCHAR(30);
declare variable EVEHRYREGRAT        NUMERIC(15,4);
declare variable EVEHRYOVTRAT        NUMERIC(15,4);
declare variable EVEHRYOVT2RAT       NUMERIC(15,4);
declare variable EVEREGTIM           INTEGER;
declare variable EVEOTHTIM           INTEGER;
declare variable EVEOVTTIM           INTEGER;
declare variable EVEOVT2TIM          INTEGER;
declare variable MasschMaskey        INTEGER;
declare variable MasSchMasLab        VARCHAR(15);
declare variable MasSchMasDes        VARCHAR(30);
declare variable MasSchDetKey        INTEGER;
declare variable MasschDetRnk        INTEGER;
declare variable SchModKey           INTEGER;
declare variable SchJobKey           INTEGER;
declare variable SchStaTim           DATE;
declare variable SchEndTim           DATE;
declare variable schTottim           INTEGER;
declare variable schBakOutTim        INTEGER;
declare variable DVRTCURERNRTE       NUMERIC(15,4);
declare variable DVRTONSTDOVT        NUMERIC(15,4);
declare variable DVRTONSTDMUP        NUMERIC(15,4);
declare variable DVRTSPCPAY          NUMERIC(15,4);
declare variable DVRTSPLITRAT        NUMERIC(15,4);
declare variable DVrtREG             NUMERIC(15,4);
declare variable DVrtOTH             NUMERIC(15,4);
declare variable DVrtOVT             NUMERIC(15,4);
declare variable DVrtOVT2            NUMERIC(15,4);
declare variable DVrtTOT             NUMERIC(15,4);
declare variable DVRTEQPAY           NUMERIC(15,4);
declare variable DVRTWRKAVE          NUMERIC(15,4);
declare variable DVPYONSTDOVT        NUMERIC(15,4);
declare variable DVPYONSTDMUP        NUMERIC(15,4);
declare variable DVPYONSTDINC        NUMERIC(15,4);
declare variable DVPYONSTDERN        NUMERIC(15,4);
declare variable DVPYOFSTDERN        NUMERIC(15,4);
declare variable DVPYREG             NUMERIC(15,4);
declare variable DVPYOTH             NUMERIC(15,4);
declare variable DVPYOVT             NUMERIC(15,4);
declare variable DVPYOVT2            NUMERIC(15,4);
declare variable DVPYSPCPAY          NUMERIC(15,4);
declare variable DVPYTOT             NUMERIC(15,4);
declare variable DVPYSHF             NUMERIC(15,4);
declare variable DVRTBONPLN          NUMERIC(15,4);
declare variable DVRTBONDEP          NUMERIC(15,4);
declare variable DVRTBONMOD          NUMERIC(15,4);
declare variable DVRTBONIND          NUMERIC(15,4);
declare variable DVPYBONPLN          NUMERIC(15,4);
declare variable DVPYBONDEP          NUMERIC(15,4);
declare variable DVPYBONMOD          NUMERIC(15,4);
declare variable DVPYBONIND          NUMERIC(15,4);
declare variable grsprepay           NUMERIC(15,4);
declare variable grspretim           INTEGER;
declare variable tmpfltfld1          NUMERIC(15,4);
declare variable tmpfltfld2          NUMERIC(15,4);
declare variable tmpfltfld3          NUMERIC(15,4);
declare variable tmpfltfld4          NUMERIC(15,4);
declare variable tmpfltfld5          NUMERIC(15,4);
declare variable tmpintfld1          INTEGER;
declare variable tmpintfld2          INTEGER;
declare variable tmpintfld3          INTEGER;
declare variable tmpintfld4          INTEGER;
declare variable tmpintfld5          INTEGER;
declare variable holidaytf           CHAR(1);
begin
 paysesdefkey=vpaysesdefkey;
 CloseSuccessful = 'F';
 payseskey = gen_id( genpayseskey, 1 );
  select max(ps.perenddat) + 1
   from payses ps
  where ps.paysesdefkey = :paysesdefkey
   into :lowrkdat;
 if (lowrkdat is null)
   then lowrkdat = cast( '01/01/96' as date );
 /*select the session key to use from paysesdef$ */
 select min(EPDKEY), min(curpernum), min(dayperper) from paysesdef$
  where paysesdefkey = :paysesdefkey
  into :EPDKEY, :pernum, :ivdayperper;
 if (epdkey is null) then
    exception ECCP_NOFROZENPAY;
  select count(*)
    from ccpevecur
    where paysesdefkey=:paysesdefkey and ccpkey=:epdkey
    into :CountInFrozen;
  if (CountInFrozen = 0) then
    exception ECCP_FROZENBUTEMPTY;
 select min(curperdat)
  from ccpevecur
  where paysesdefkey=:paysesdefkey and ccpkey=:epdkey
  into :curperdat;
 select min(psd.paysesdeflab),min(psd.perclsdel),
          min(em.empmaslab),max(em.empmaslab),
          min(dep.deplab),max(dep.deplab)
     from empmas em
          inner join mod$ mod on em.modkey=mod.modkey
          inner join dep$ dep on dep.depkey=mod.depkey,
          gtpaysesdefkey gs,
          paysesdef$ psd
    where em.empmaskey=gs.empmaskey
      and gs.paysesdefkey=psd.paysesdefkey
      and psd.paysesdefkey=:paysesdefkey
      and em.hidrec='F'
     into :paysesdeflab,:perclsdel,
          :loempmaslab,:hiempmaslab,
          :lodeplab,:hideplab ;
 for select distinct empmaskey
       from ccpevecur
   where ccpkey = :epdkey
    into :empmaskey
 do begin
      execute procedure addempjobhours :epdkey, :empmaskey;
      For select
min(perenddat),min(empmaskey),min(EmpHidrec),
min(EMPMASLAB),min(EMPMASBDG),min(EMPMASLNM),min(EMPMASFNM),min(EMPMASMNM),min(SOCSECNO),min(EMPMASPFMKEY),
min(SHFKEY),min(SHFLAB),min(SHFDES),min(PRMVAL),min(PRMVALPCTTF),min(USEINOVTTF),min(HOMJOBKEY),min(HOMJOBLAB),
min(HOMJOBDES),min(HOMJOBHPTKEY),min(HOMJOBDIRTF),min(HOMJOBOFFSTD),min(HOMJOBINCMINKEY),min(HOMJOBEMPTMCKEY),
min(HOMJOBBONELIINDTF),min(HOMJOBBONELIMODTF),min(HOMJOBBONELIDEPTF),min(HOMJOBBONELIPLNTF),min(HOMJOBCLSKEY),
min(HOMJOBCLSLAB),min(HOMJOBCLSDES),min(HOMJOBCLSPFMKEY),min(HOMMODKEY),min(HOMMODLAB),min(HOMMODDES),min(HOMDEPKEY),
min(HOMDEPLAB),min(HOMDEPDES),min(PAYSESDEFKEY),min(PAYSESDEFLAB),min(PAYSESDEFDES),min(REPTIMWRKFAC),min(REPTIKTIMFAC),
min(REPTIKUNSFAC),min(HOMPLNKEY),min(HOMPLNLAB),min(HOMPLNDES),min(MGRKEY),min(MGRLAB),min(MGRLNM),
min(PFMKEY),min(PFMLAB),min(PFMDES),min(WAGUNSKEY),min(STDFRMYN),min(OVTMET),min(MUPMET),min(OVTTHRYN),min(OVTTHRMET),
min(OVTTHRVAL),min(OVTMUL),min(OVT2THRVAL),min(OVT2MUL),min(homshfprmtf),min(OFFSTDOVTRAT),min(INCMINKEY),min(INCMINLAB),
min(INCMINDES),min(INCMINVAL),min(HRYHPTKEY),min(HRYLAB),min(HRYDES),min(HRYREGRAT),min(HRYOVTRAT),min(HRYOVT2RAT),
min(TMCKEY),min(TMCLAB),min(TMCDES),min(TMCVAL),min(CTYKEY),min(CTYLAB),min(CTYDES)
from ccpevecur cc
    where cc.ccpkey = :epdkey
    and empmaskey = :empmaskey
    into
:perenddat,:empmaskey,:EmpHidrec,:EMPMASLAB,:EMPMASBDG,:EMPMASLNM,
:EMPMASFNM,:EMPMASMNM,:SOCSECNO,:EMPMASPFMKEY,:SHFKEY,:SHFLAB,:SHFDES,:PRMVAL,:PRMVALPCTTF,:USEINOVTTF,:HOMJOBKEY,
:HOMJOBLAB,:HOMJOBDES,:HOMJOBHPTKEY,:HOMJOBDIRTF,:HOMJOBOFFSTD,:HOMJOBINCMINKEY,:HOMJOBEMPTMCKEY,:HOMJOBBONELIINDTF,
:HOMJOBBONELIMODTF,:HOMJOBBONELIDEPTF,:HOMJOBBONELIPLNTF,:HOMJOBCLSKEY,:HOMJOBCLSLAB,:HOMJOBCLSDES,:HOMJOBCLSPFMKEY,
:HOMMODKEY,:HOMMODLAB,:HOMMODDES,:HOMDEPKEY,:HOMDEPLAB,:HOMDEPDES,:PAYSESDEFKEY,:PAYSESDEFLAB,:PAYSESDEFDES,
:REPTIMWRKFAC,:REPTIKTIMFAC,:REPTIKUNSFAC,:HOMPLNKEY,:HOMPLNLAB,:HOMPLNDES,:MGRKEY,:MGRLAB,:MGRLNM,:PFMKEY,
:PFMLAB,:PFMDES,:WAGUNSKEY,:STDFRMYN,:OVTMET,:MUPMET,:OVTTHRYN,:OVTTHRMET,:OVTTHRVAL,:OVTMUL,:OVT2THRVAL,
:OVT2MUL,:homshfprmtf,:OFFSTDOVTRAT,:INCMINKEY,:INCMINLAB,:INCMINDES,:INCMINVAL,:HRYHPTKEY,:HRYLAB,:HRYDES,
:HRYREGRAT,:HRYOVTRAT,:HRYOVT2RAT,:TMCKEY,:TMCLAB,:TMCDES,:TMCVAL,:CTYKEY,:CTYLAB,:CTYDES
do begin
           hismaskey = gen_id( genhismaskey, 1 );
         insert into hismas(
hismaskey,PAYSESKEY,PERNUM,PERENDDAT,curperdat,ccpkey,empmaskey,EmpHidrec,
EMPMASLAB,EMPMASBDG,EMPMASLNM,EMPMASFNM,EMPMASMNM,SOCSECNO,EMPMASPFMKEY,SHFKEY,
SHFLAB,SHFDES,PRMVAL,PRMVALPCTTF,USEINOVTTF,HOMJOBKEY,HOMJOBLAB,HOMJOBDES,HOMJOBHPTKEY,
HOMJOBDIRTF,HOMJOBOFFSTD,HOMJOBINCMINKEY,HOMJOBEMPTMCKEY,HOMJOBBONELIINDTF,HOMJOBBONELIMODTF,
HOMJOBBONELIDEPTF,HOMJOBBONELIPLNTF,HOMJOBCLSKEY,HOMJOBCLSLAB,HOMJOBCLSDES,HOMJOBCLSPFMKEY,
HOMMODKEY,HOMMODLAB,HOMMODDES,HOMDEPKEY,HOMDEPLAB,HOMDEPDES,PAYSESDEFKEY,PAYSESDEFLAB,PAYSESDEFDES,
REPTIMWRKFAC,REPTIKTIMFAC,REPTIKUNSFAC,HOMPLNKEY,HOMPLNLAB,HOMPLNDES,MGRKEY,MGRLAB,MGRLNM,PFMKEY,
PFMLAB,PFMDES,WAGUNSKEY,STDFRMYN,OVTMET,MUPMET,OVTTHRYN,OVTTHRMET,OVTTHRVAL,OVTMUL,OVT2THRVAL,
OVT2MUL,homshfprmtf,OFFSTDOVTRAT,INCMINKEY,INCMINLAB,INCMINDES,INCMINVAL,HRYHPTKEY,HRYLAB,
HRYDES,HRYREGRAT,HRYOVTRAT,HRYOVT2RAT,TMCKEY,TMCLAB,TMCDES,TMCVAL,CTYKEY,CTYLAB,CTYDES )
values (
:hismaskey,:PAYSESKEY,:PERNUM,:PERENDDAT,:curperdat,:epdkey,:empmaskey,:EmpHidrec,
:EMPMASLAB,:EMPMASBDG,:EMPMASLNM,:EMPMASFNM,:EMPMASMNM,:SOCSECNO,:EMPMASPFMKEY,:SHFKEY,
:SHFLAB,:SHFDES,:PRMVAL,:PRMVALPCTTF,:USEINOVTTF,:HOMJOBKEY,:HOMJOBLAB,:HOMJOBDES,:HOMJOBHPTKEY,
:HOMJOBDIRTF,:HOMJOBOFFSTD,:HOMJOBINCMINKEY,:HOMJOBEMPTMCKEY,:HOMJOBBONELIINDTF,:HOMJOBBONELIMODTF,
:HOMJOBBONELIDEPTF,:HOMJOBBONELIPLNTF,:HOMJOBCLSKEY,:HOMJOBCLSLAB,:HOMJOBCLSDES,:HOMJOBCLSPFMKEY,
:HOMMODKEY,:HOMMODLAB,:HOMMODDES,:HOMDEPKEY,:HOMDEPLAB,:HOMDEPDES,:PAYSESDEFKEY,:PAYSESDEFLAB,:PAYSESDEFDES,
:REPTIMWRKFAC,:REPTIKTIMFAC,:REPTIKUNSFAC,:HOMPLNKEY,:HOMPLNLAB,:HOMPLNDES,:MGRKEY,:MGRLAB,:MGRLNM,:PFMKEY,
:PFMLAB,:PFMDES,:WAGUNSKEY,:STDFRMYN,:OVTMET,:MUPMET,:OVTTHRYN,:OVTTHRMET,:OVTTHRVAL,:OVTMUL,:OVT2THRVAL,
:OVT2MUL,:homshfprmtf,:OFFSTDOVTRAT,:INCMINKEY,:INCMINLAB,:INCMINDES,:INCMINVAL,:HRYHPTKEY,:HRYLAB,
:HRYDES,:HRYREGRAT,:HRYOVTRAT,:HRYOVT2RAT,:TMCKEY,:TMCLAB,:TMCDES,:TMCVAL,:CTYKEY,:CTYLAB,:CTYDES );
for select
EVECURKEY,WRKDAT,wrkdatint,EVECURRNK,TOTTIM,TPSTIKTOTUNS,TPSTIKTOTBUN,TPSTIKTOTCUR,TPSTIKTOTTIM,
TPSTIKCURERN,TPSTIKTIMERN,TPSTIKJOBCURERN,TPSTIKJOBTIMERN,TPSTIKOPRCURERN,TPSTIKOPRTIMERN,GENTIKTOTUNS,
GENTIKTOTTIK,GENTIKTOTCUR,GENTIKTOTTIM,GENTIKCURERN,GENTIKTIMERN,GENTIKJOBCURERN,GENTIKJOBTIMERN,GENTIKOPRCURERN,
GENTIKOPRTIMERN,ADJTOTADJ,ADJTOTCUR,ADJTOTTIM,ADJTOTPAY,ADJCURERN,ADJTIMERN,ADJJOBCURERN,ADJJOBTIMERN,ADJOPRCURERN,
ADJOPRTIMERN,PayTpsCurErn,PayGenCurErn,PayAdjCurErn,PayTpsTimErn,PayGenTimErn,PayAdjTimErn,EngTpsCurErn,
EngGenCurErn,EngAdjCurErn,EngTpsTimErn,EngGenTimErn,EngAdjTimErn,PayUseTimValTF,EngUseTimValTF,PayTmcJobTF,
EngTMCjobTF,hptcoeff,tmccoeff,incmincoeff,ernratcoeff,EVEJOBKEY,EVEJOBLAB,EVEJOBDES,EVEJOBDIRTF,EVEJOBOFFSTD,
EveJobHptKey,EVEJOBINCMINKEY,EVEJOBINCMINLAB,EVEJOBINCMINdes,EVEJOBINCMINVAL,EVEJOBEMPTMCKEY,EVEJOBEMPTMCLAB,
EVEJOBEMPTMCdes,EVEJOBEMPTMCVAL,evejobmupsetkey,evejobmupsetlab,evejobmupsetdes,evemupmet,EVEJOBPAYYN,EVEJOBWRKYN,
EVEJOBREGOTHNON,EVEJOBOVTELG,EVEJOBBONELIINDTF,EVEJOBBONELIMODTF,EVEJOBBONELIDEPTF,EVEJOBBONELIPLNTF,EVEJOBBONCALINDTF,
EVEJOBBONCALMODTF,EVEJOBBONCALDEPTF,EVEJOBBONCALPLNTF,EVEJOBCLSKEY,EVEJOBCLSLAB,EVEJOBCLSDES,EVEJOBCLSPFMKEY,EVEMODKEY,
EVEMODLAB,EVEMODDES,EVEDEPKEY,EVEDEPLAB,EVEDEPDES,EVEMCHKEY,EVEMCHLAB,EVEMCHDES,EVEMCHGRPKEY,EVEMCHEFF,EVESHFKEY,
EVESHFLAB,EVESHFDES,EVEPRMVAL,EVEPRMVALPCTTF,EVEDVRTSHF,EVEHRYHPTKEY,EVEHRYLAB,EVEHRYDES,EVEHRYREGRAT,EVEHRYOVTRAT,
EVEHRYOVT2RAT,EVEREGTIM,EVEOTHTIM,EVEOVTTIM,EVEOVT2TIM,MasschMaskey,MasSchMasLab,MasSchMasDes,MasSchDetKey,
MasschDetRnk,SchModKey,SchJobKey,SchStaTim,SchEndTim,schTottim,schBakOutTim,DVRTCURERNRTE,DVRTONSTDOVT,
DVRTONSTDMUP,DVRTSPCPAY,DVRTSPLITRAT,DVrtREG,DVrtOTH,DVrtOVT,DVrtOVT2,DVrtTOT,DVRTEQPAY,DVRTWRKAVE,DVPYONSTDOVT,
DVPYONSTDMUP,DVPYONSTDINC,DVPYONSTDERN,DVPYOFSTDERN,DVPYREG,DVPYOTH,DVPYOVT,DVPYOVT2,DVPYSPCPAY,DVPYTOT,
DVPYSHF,DVRTBONPLN,DVRTBONDEP,DVRTBONMOD,DVRTBONIND,DVPYBONPLN,DVPYBONDEP,DVPYBONMOD,DVPYBONIND,grsprepay,
grspretim,tmpfltfld1,tmpfltfld2,tmpfltfld3,tmpfltfld4,tmpfltfld5,tmpintfld1,tmpintfld2,tmpintfld3,tmpintfld4,
tmpintfld5,holidaytf
from ccpevecur where ccpkey = :epdkey and empmaskey = :empmaskey into
:EVECURKEY,:WRKDAT,:wrkdatint,:EVECURRNK,:TOTTIM,:TPSTIKTOTUNS,:TPSTIKTOTBUN,:TPSTIKTOTCUR,:TPSTIKTOTTIM,
:TPSTIKCURERN,:TPSTIKTIMERN,:TPSTIKJOBCURERN,:TPSTIKJOBTIMERN,:TPSTIKOPRCURERN,:TPSTIKOPRTIMERN,:GENTIKTOTUNS,
:GENTIKTOTTIK,:GENTIKTOTCUR,:GENTIKTOTTIM,:GENTIKCURERN,:GENTIKTIMERN,:GENTIKJOBCURERN,:GENTIKJOBTIMERN,
:GENTIKOPRCURERN,:GENTIKOPRTIMERN,:ADJTOTADJ,:ADJTOTCUR,:ADJTOTTIM,:ADJTOTPAY,:ADJCURERN,:ADJTIMERN,
:ADJJOBCURERN,:ADJJOBTIMERN,:ADJOPRCURERN,:ADJOPRTIMERN,:PayTpsCurErn,:PayGenCurErn,:PayAdjCurErn,:PayTpsTimErn,
:PayGenTimErn,:PayAdjTimErn,:EngTpsCurErn,:EngGenCurErn,:EngAdjCurErn,:EngTpsTimErn,:EngGenTimErn,:EngAdjTimErn,
:PayUseTimValTF,:EngUseTimValTF,:PayTmcJobTF,:EngTMCjobTF,:hptcoeff,:tmccoeff,:incmincoeff,:ernratcoeff,
:EVEJOBKEY,:EVEJOBLAB,:EVEJOBDES,:EVEJOBDIRTF,:EVEJOBOFFSTD,:EveJobHptKey,:EVEJOBINCMINKEY,:EVEJOBINCMINLAB,
:EVEJOBINCMINdes,:EVEJOBINCMINVAL,:EVEJOBEMPTMCKEY,:EVEJOBEMPTMCLAB,:EVEJOBEMPTMCdes,:EVEJOBEMPTMCVAL,:evejobmupsetkey,
:evejobmupsetlab,:evejobmupsetdes,:evemupmet,:EVEJOBPAYYN,:EVEJOBWRKYN,:EVEJOBREGOTHNON,:EVEJOBOVTELG,
:EVEJOBBONELIINDTF,:EVEJOBBONELIMODTF,:EVEJOBBONELIDEPTF,:EVEJOBBONELIPLNTF,:EVEJOBBONCALINDTF,:EVEJOBBONCALMODTF,
:EVEJOBBONCALDEPTF,:EVEJOBBONCALPLNTF,:EVEJOBCLSKEY,:EVEJOBCLSLAB,:EVEJOBCLSDES,:EVEJOBCLSPFMKEY,:EVEMODKEY,
:EVEMODLAB,:EVEMODDES,:EVEDEPKEY,:EVEDEPLAB,:EVEDEPDES,:EVEMCHKEY,:EVEMCHLAB,:EVEMCHDES,:EVEMCHGRPKEY,:EVEMCHEFF,
:EVESHFKEY,:EVESHFLAB,:EVESHFDES,:EVEPRMVAL,:EVEPRMVALPCTTF,:EVEDVRTSHF,:EVEHRYHPTKEY,:EVEHRYLAB,:EVEHRYDES,
:EVEHRYREGRAT,:EVEHRYOVTRAT,:EVEHRYOVT2RAT,:EVEREGTIM,:EVEOTHTIM,:EVEOVTTIM,:EVEOVT2TIM,:MasschMaskey,:MasSchMasLab,
:MasSchMasDes,:MasSchDetKey,:MasschDetRnk,:SchModKey,:SchJobKey,:SchStaTim,:SchEndTim,:schTottim,:schBakOutTim,
:DVRTCURERNRTE,:DVRTONSTDOVT,:DVRTONSTDMUP,:DVRTSPCPAY,:DVRTSPLITRAT,:DVrtREG,:DVrtOTH,:DVrtOVT,:DVrtOVT2,
:DVrtTOT,:DVRTEQPAY,:DVRTWRKAVE,:DVPYONSTDOVT,:DVPYONSTDMUP,:DVPYONSTDINC,:DVPYONSTDERN,:DVPYOFSTDERN,:DVPYREG,
:DVPYOTH,:DVPYOVT,:DVPYOVT2,:DVPYSPCPAY,:DVPYTOT,:DVPYSHF,:DVRTBONPLN,:DVRTBONDEP,:DVRTBONMOD,:DVRTBONIND,
:DVPYBONPLN,:DVPYBONDEP,:DVPYBONMOD,:DVPYBONIND,:grsprepay,:grspretim,:tmpfltfld1,:tmpfltfld2,:tmpfltfld3,
:tmpfltfld4,:tmpfltfld5,:tmpintfld1,:tmpintfld2,:tmpintfld3,:tmpintfld4,:tmpintfld5,:holidaytf
do begin
insert into hiseve (
HISMASKEY,EVECURKEY,WRKDAT,wrkdatint,EVECURRNK,TOTTIM,TPSTIKTOTUNS,TPSTIKTOTBUN,TPSTIKTOTCUR,TPSTIKTOTTIM,
TPSTIKCURERN,TPSTIKTIMERN,TPSTIKJOBCURERN,TPSTIKJOBTIMERN,TPSTIKOPRCURERN,TPSTIKOPRTIMERN,GENTIKTOTUNS,
GENTIKTOTTIK,GENTIKTOTCUR,GENTIKTOTTIM,GENTIKCURERN,GENTIKTIMERN,GENTIKJOBCURERN,GENTIKJOBTIMERN,
GENTIKOPRCURERN,GENTIKOPRTIMERN,ADJTOTADJ,ADJTOTCUR,ADJTOTTIM,ADJTOTPAY,ADJCURERN,ADJTIMERN,ADJJOBCURERN,
ADJJOBTIMERN,ADJOPRCURERN,ADJOPRTIMERN,PayTpsCurErn,PayGenCurErn,PayAdjCurErn,PayTpsTimErn,PayGenTimErn,
PayAdjTimErn,EngTpsCurErn,EngGenCurErn,EngAdjCurErn,EngTpsTimErn,EngGenTimErn,EngAdjTimErn,PayUseTimValTF,
EngUseTimValTF,PayTmcJobTF,EngTMCjobTF,hptcoeff,tmccoeff,incmincoeff,ernratcoeff,EVEJOBKEY,EVEJOBLAB,
EVEJOBDES,EVEJOBDIRTF,EVEJOBOFFSTD,EveJobHptKey,EVEJOBINCMINKEY,EVEJOBINCMINLAB,EVEJOBINCMINdes,EVEJOBINCMINVAL,
EVEJOBEMPTMCKEY,EVEJOBEMPTMCLAB,EVEJOBEMPTMCdes,EVEJOBEMPTMCVAL,evejobmupsetkey,evejobmupsetlab,evejobmupsetdes,
evemupmet,EVEJOBPAYYN,EVEJOBWRKYN,EVEJOBREGOTHNON,EVEJOBOVTELG,EVEJOBBONELIINDTF,EVEJOBBONELIMODTF,EVEJOBBONELIDEPTF,
EVEJOBBONELIPLNTF,EVEJOBBONCALINDTF,EVEJOBBONCALMODTF,EVEJOBBONCALDEPTF,EVEJOBBONCALPLNTF,EVEJOBCLSKEY,
EVEJOBCLSLAB,EVEJOBCLSDES,EVEJOBCLSPFMKEY,EVEMODKEY,EVEMODLAB,EVEMODDES,EVEDEPKEY,EVEDEPLAB,EVEDEPDES,
EVEMCHKEY,EVEMCHLAB,EVEMCHDES,EVEMCHGRPKEY,EVEMCHEFF,EVESHFKEY,EVESHFLAB,EVESHFDES,EVEPRMVAL,EVEPRMVALPCTTF,
EVEDVRTSHF,EVEHRYHPTKEY,EVEHRYLAB,EVEHRYDES,EVEHRYREGRAT,EVEHRYOVTRAT,EVEHRYOVT2RAT,EVEREGTIM,EVEOTHTIM,
EVEOVTTIM,EVEOVT2TIM,MasschMaskey,MasSchMasLab,MasSchMasDes,MasSchDetKey,MasschDetRnk,SchModKey,SchJobKey,
SchStaTim,SchEndTim,schTottim,schBakOutTim,DVRTCURERNRTE,DVRTONSTDOVT,DVRTONSTDMUP,DVRTSPCPAY,DVRTSPLITRAT,
DVrtREG,DVrtOTH,DVrtOVT,DVrtOVT2,DVrtTOT,DVRTEQPAY,DVRTWRKAVE,DVPYONSTDOVT,DVPYONSTDMUP,DVPYONSTDINC,DVPYONSTDERN,
DVPYOFSTDERN,DVPYREG,DVPYOTH,DVPYOVT,DVPYOVT2,DVPYSPCPAY,DVPYTOT,DVPYSHF,DVRTBONPLN,DVRTBONDEP,DVRTBONMOD,DVRTBONIND,
DVPYBONPLN,DVPYBONDEP,DVPYBONMOD,DVPYBONIND,grsprepay,grspretim,tmpfltfld1,tmpfltfld2,tmpfltfld3,tmpfltfld4,tmpfltfld5,
tmpintfld1,tmpintfld2,tmpintfld3,tmpintfld4,tmpintfld5,holidaytf  )
     values(
:HISMASKEY,:EVECURKEY,:WRKDAT,:wrkdatint,:EVECURRNK,:TOTTIM,:TPSTIKTOTUNS,:TPSTIKTOTBUN,:TPSTIKTOTCUR,:TPSTIKTOTTIM,
:TPSTIKCURERN,:TPSTIKTIMERN,:TPSTIKJOBCURERN,:TPSTIKJOBTIMERN,:TPSTIKOPRCURERN,:TPSTIKOPRTIMERN,:GENTIKTOTUNS,
:GENTIKTOTTIK,:GENTIKTOTCUR,:GENTIKTOTTIM,:GENTIKCURERN,:GENTIKTIMERN,:GENTIKJOBCURERN,:GENTIKJOBTIMERN,:GENTIKOPRCURERN,
:GENTIKOPRTIMERN,:ADJTOTADJ,:ADJTOTCUR,:ADJTOTTIM,:ADJTOTPAY,:ADJCURERN,:ADJTIMERN,:ADJJOBCURERN,:ADJJOBTIMERN,
:ADJOPRCURERN,:ADJOPRTIMERN,:PayTpsCurErn,:PayGenCurErn,:PayAdjCurErn,:PayTpsTimErn,:PayGenTimErn,:PayAdjTimErn,
:EngTpsCurErn,:EngGenCurErn,:EngAdjCurErn,:EngTpsTimErn,:EngGenTimErn,:EngAdjTimErn,:PayUseTimValTF,:EngUseTimValTF,
:PayTmcJobTF,:EngTMCjobTF,:hptcoeff,:tmccoeff,:incmincoeff,:ernratcoeff,:EVEJOBKEY,:EVEJOBLAB,:EVEJOBDES,:EVEJOBDIRTF,
:EVEJOBOFFSTD,:EveJobHptKey,:EVEJOBINCMINKEY,:EVEJOBINCMINLAB,:EVEJOBINCMINdes,:EVEJOBINCMINVAL,:EVEJOBEMPTMCKEY,:EVEJOBEMPTMCLAB,
:EVEJOBEMPTMCdes,:EVEJOBEMPTMCVAL,:evejobmupsetkey,:evejobmupsetlab,:evejobmupsetdes,:evemupmet,:EVEJOBPAYYN,
:EVEJOBWRKYN,:EVEJOBREGOTHNON,:EVEJOBOVTELG,:EVEJOBBONELIINDTF,:EVEJOBBONELIMODTF,:EVEJOBBONELIDEPTF,:EVEJOBBONELIPLNTF,
:EVEJOBBONCALINDTF,:EVEJOBBONCALMODTF,:EVEJOBBONCALDEPTF,:EVEJOBBONCALPLNTF,:EVEJOBCLSKEY,:EVEJOBCLSLAB,:EVEJOBCLSDES,
:EVEJOBCLSPFMKEY,:EVEMODKEY,:EVEMODLAB,:EVEMODDES,:EVEDEPKEY,:EVEDEPLAB,:EVEDEPDES,:EVEMCHKEY,:EVEMCHLAB,:EVEMCHDES,
:EVEMCHGRPKEY,:EVEMCHEFF,:EVESHFKEY,:EVESHFLAB,:EVESHFDES,:EVEPRMVAL,:EVEPRMVALPCTTF,:EVEDVRTSHF,:EVEHRYHPTKEY,:EVEHRYLAB,
:EVEHRYDES,:EVEHRYREGRAT,:EVEHRYOVTRAT,:EVEHRYOVT2RAT,:EVEREGTIM,:EVEOTHTIM,:EVEOVTTIM,:EVEOVT2TIM,:MasschMaskey,
:MasSchMasLab,:MasSchMasDes,:MasSchDetKey,:MasschDetRnk,:SchModKey,:SchJobKey,:SchStaTim,:SchEndTim,:schTottim,
:schBakOutTim,:DVRTCURERNRTE,:DVRTONSTDOVT,:DVRTONSTDMUP,:DVRTSPCPAY,:DVRTSPLITRAT,:DVrtREG,:DVrtOTH,:DVrtOVT,:DVrtOVT2,
:DVrtTOT,:DVRTEQPAY,:DVRTWRKAVE,:DVPYONSTDOVT,:DVPYONSTDMUP,:DVPYONSTDINC,:DVPYONSTDERN,:DVPYOFSTDERN,:DVPYREG,
:DVPYOTH,:DVPYOVT,:DVPYOVT2,:DVPYSPCPAY,:DVPYTOT,:DVPYSHF,:DVRTBONPLN,:DVRTBONDEP,:DVRTBONMOD,:DVRTBONIND,:DVPYBONPLN,
:DVPYBONDEP,:DVPYBONMOD,:DVPYBONIND,:grsprepay,:grspretim,:tmpfltfld1,:tmpfltfld2,:tmpfltfld3,:tmpfltfld4,:tmpfltfld5,
:tmpintfld1,:tmpintfld2,:tmpintfld3,:tmpintfld4,:tmpintfld5,:holidaytf ) ;
end /* end detail events based entry to hstdet table */
end /* end singleton hstmas loop */
end /* end the distinct empmaskey loop */
insert into payses( payseskey,paysesdefkey,perenddat,pernum) values(:payseskey,:paysesdefkey,:curperdat,:pernum );
update paysesdef$ set curperdat = :curperdat + :ivdayperper, curpernum = :pernum+1 where paysesdefkey=:paysesdefkey;
execute procedure hstave :paysesdefkey returning_values :calcsuccessful;
execute procedure setactiveevecur :paysesdefkey RETURNING_VALUES :setsuccessful;
IF (perclsdel='T') then execute procedure delhiddat 1 RETURNING_VALUES :deletesuccessful;
     /* delete records from the table */
     execute procedure CCPEveCurClear :EPDKey;
     /* Nullify the edpkey in paysesdef$ table */
     update Paysesdef$
        set epdkey = null
      where paysesdefkey = :paysesdefkey;
delete from rptsespar;
delete from rptses;
CloseSuccessful = 'T';
end
 ^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;