***********************************************************
*                                                         *
* TRAITEMENT DES DADS CRC VERSION PAPIER                  *
*                                                         *
* JANVIER 2001                            STEPHANE HERVET *
*                                                         *
***********************************************************

* RECAPITULATIF DES GOSUB
* 10  -> PREPARATION ENTETE DU FICHIER (ENTITE+ETABLISSEMENT)                     
* 20  -> GESTION DADS SALARIE                                                     
* 30  -> GESTION SAUT DE PAGE                                                     
* 40  -> IMPRIME LE TOTAL DE L'ENTITE                                            
* 50  -> MISE EN TABLES DES BRC TYPE RETRAITE SALARIEE
* 100 -> RECHERCHE + STOCKE INFORMATION CONCERNANT L'AIDANT                  
* 200 -> RECUPERE INFORMATION CONCERNANT L'AIDANT                               
* 201 -> RECUPERE INFORMATION BASE (SECU. + IMPOTS + TAXE SAL.)
* 300 -> RECUPERE INFORMATION BASE TOTAL (SECU. + IMPOTS + TAXE SAL.)
* 301 -> INSERTION SEPARATEUR MILLIERS + MILLIONS (TOTAL BASE)
* 400 -> CUMULE LES TOTAUX GENERAUX ENTITES
* 401 -> INSERTION SEPARATEUR MILLIERS + MILLIONS (TOTAL ENTITE)
* 900 -> R.A.Z DES TOTAUX GENERAUX
* 999 -> INITIALISATION DES VARIABLES

***********************************************************
***********************************************************
* OUVERTURE DES FICHIERS

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","ETRANGER" TO F.ETRANGER ELSE STOP
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP
OPEN "","HISTORCUMULETABL" TO F.HISTORCUMULETABL ELSE STOP
OPEN "","ORGANISMESOCIAL" TO F.ORGANISMESOCIAL ELSE STOP
OPEN "","REGROUPBRC" TO F.REGROUPBRC ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
OPEN "","TAMPONDADS" TO F.TAMPONDADS ELSE STOP
OPEN "","TRANCHE" TO F.TRANCHE ELSE STOP

***********************************************************
* DEBUT TRAITEMENT DES ARTICLES

PROCREAD PARAMETRES ELSE STOP

* RECUPERE LA PERIODE
W_RANGPERIODE=INDEX(PARAMETRES," ",1)
W_PERIODE=PARAMETRES[W_RANGPERIODE+1,4]

* RECUPERE LE CODE ENTITE
W_RANGENTITE=INDEX(PARAMETRES," ",2)
W_CODEENTITE=PARAMETRES[W_RANGENTITE+1,3]

* RECUPERE LE NB AIDANT PAR PAGE
W_RANGNBAIDANT=INDEX(PARAMETRES," ",3)
W_NBMAXAIDANT=PARAMETRES[W_RANGNBAIDANT+1,2]

* RECUPERE LE CODE ORGANISME
W_RANGORG=INDEX(PARAMETRES," ",4)
W_ORG=PARAMETRES[W_RANGORG+1,9]

* INITIALISATION DES VARIABLES
GOSUB 999

***********************************************************
* SELECTION + CHARGEMENT DE LA LISTE DES ARTICLES SELECTIONNES

* LECTURE ENTITE
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODEENTITE ELSE ENR_ASSOCIATION=""

* TEST SI DECALAGE PAIE
IF ENR_ASSOCIATION<25>=0 THEN
    * CALCUL 1ER JOUR ANNEE + DERNIER JOUR ANNEE
    W_DEBUTAN="01/01/":W_PERIODE
    W_DEBUTAN=ICONV(W_DEBUTAN,"D4/")
    W_FINAN="31/12/":W_PERIODE
    W_FINAN=ICONV(W_FINAN,"D4/")
END ELSE
    * CALCUL 1ER JOUR DECEMBRE + DERNIER JOUR NOVEMBRE
    W_DEBUTAN="01/12/":W_PERIODE-1
    W_DEBUTAN=ICONV(W_DEBUTAN,"D4/")
    W_FINAN="30/11/":W_PERIODE
    W_FINAN=ICONV(W_FINAN,"D4/")
END

* LECTURE DE L'ORGANISME SOCIAL
READ ENR_ORGANISMESOCIAL FROM F.ORGANISMESOCIAL,W_ORG ELSE ENR_ORGANISMESOCIAL=""
ENR_ORGANISMESOCIAL<1>=ENR_ORGANISMESOCIAL<1>[1,30]
ENR_ORGANISMESOCIAL<19>=ENR_ORGANISMESOCIAL<19>[1,20]
ENR_ORGANISMESOCIAL<1>=ENR_ORGANISMESOCIAL<1> "L#40"
ENR_ORGANISMESOCIAL<19>=ENR_ORGANISMESOCIAL<19>[1,20] 

* LECTURE TABLES "MOTIF DE FIN DE CONTRAT"
READ ENR_MOTIF FROM F.TABLES,"FINCONTRAT" ELSE ENR_MOTIF=""

* SELECTIONNE LES CONTRATS VALIDE SUR L'ANNEE, PRESTATAIRE ET A L'ENTITE
CONTRATDADS = ""
EXECUTE 'TSELECT CONTRAT AVEC 1 <> "02" AND AVEC 2 = "':W_CODEENTITE:'" AND AVEC 8 >= "':W_DEBUTAN:'" OR = "" AND AVEC 7 <= "':W_FINAN:'" AND AVEC 65 <> "O" PAR 3 PAR NomPrenomAidantContratMarital PAR 7'
EXECUTE "SAUVE-LISTE CONTRATDADS"
EXECUTE "LISTE CONTRATDADS" CAPTURING MSGCODE RETURNING MSGCODE

IF MSGCODE<1>=209 THEN 
    STOP
END

SELECT F.CONTRAT TO CONTRATDADS

* PREPARE LES RUB DE CHARGE TYPE RETRAITE SALARIEE
GOSUB 50

I=1
LOOP
    * LECTURE RESULTAT REQUETE JUSQUE REQUETE = VIDE
    READNEXT CLE FROM CONTRATDADS ELSE W_REQVIDE="VRAI"
    UNTIL W_REQVIDE="VRAI" DO

    READ ENR_CONTRAT FROM F.CONTRAT,CLE ELSE ENR_CONTRAT=""

    * GESTION DADS SALARIE
    IF W_AIDANT<>CLE[1,5] AND W_AIDANT<>"" THEN
	GOSUB 20
    END

    IF W_ANCIENETAB<>ENR_CONTRAT<3> AND W_ANCIENETAB<>"" THEN
	W_ANCIENETAB=ENR_CONTRAT<3>

	IF W_NBAIDANT<>0 THEN GOSUB 30
 	GOSUB 10
	W_MONTANTSALAIREPAGE=0
	W_MONTANTSALAIREETAB=0
	W_NBAIDANT=0
    END
    IF W_ANCIENETAB="" THEN 
	W_ANCIENETAB=ENR_CONTRAT<3>

	GOSUB 10
    END

    IF W_NBAIDANT=W_NBMAXAIDANT THEN 
	GOSUB 30
	GOSUB 10
    END

    IF W_AIDANT<>CLE[1,5] THEN
	GOSUB 100

	W_MOTIF=""
	W_PERIODECONTRAT=""
	W_PERIODECONTRAT2=""
    END

    * STOCKE PERIODE DIVERS CONTRATS
    W_FINCONTRAT=ENR_CONTRAT<8>
    IF W_FINCONTRAT>=W_FINAN THEN W_FINCONTRAT=""

    IF W_PERIODECONTRAT="" THEN 
        W_PERIODECONTRAT="ENTREE LE : ":OCONV(ENR_CONTRAT<7>,"D4/"):" - "
    END
    W_PERIODECONTRAT2="SORTIE LE : ":OCONV(W_FINCONTRAT,"D4/")
    IF W_FINCONTRAT<>"" THEN 
	* RECHERCHE LIBELLE MOTIF DE FIN
	Z=1
	LOOP 
	     UNTIL ENR_CONTRAT<49>=ENR_MOTIF<2,Z> OR ENR_MOTIF<2,Z>="" DO
	     Z=Z+1
	REPEAT
	IF ENR_CONTRAT<49>=ENR_MOTIF<2,Z> THEN
	     IF ENR_MOTIF<4,Z>="TS" THEN 
		 W_MOTIF="07 - MUTATION INTER"
	     END ELSE
		 IF ENR_MOTIF<4,Z>="LA" OR ENR_MOTIF<4,Z>="LE" THEN
		     W_MOTIF="03 - LICENCIEMENT"
	 	 END ELSE		
		     IF ENR_MOTIF<4,Z>="DM" THEN
			 W_MOTIF="02 - DEMISSION"
		     END ELSE
			 IF ENR_MOTIF<4,Z>="RT" THEN
			     W_MOTIF="13 - DEPART RETRAIT"
			 END ELSE
			     W_MOTIF="11 - AUTRES"
			 END
		     END
		 END
	     END

	     W_PERIODECONTRAT2=W_PERIODECONTRAT2:" - MOTIF : ":W_MOTIF
	END
    END

REPEAT

GOSUB 20
GOSUB 30

GOSUB 40

* ECRITURE FICHIER DADS
WRITE ENR_TAMPONDADS ON F.TAMPONDADS,W_PERIODE

STOP

***********************************************************
* PREPARATION ENTETE DU FICHIER (ENTITE + ETABLISSEMENT)

10 *

    W_NOPAGE=W_NOPAGE+1

    READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,W_ANCIENETAB ELSE ENR_ETABLISSEMENT=""

    * CALCUL DE L'HORAIRE LEGAL
    W_HORLEGAL=ENR_ETABLISSEMENT<16>/100
    W_HORLEGAL=W_HORLEGAL*52/12

    * CONCATENE ADRESSE ETABLISSEMENT
    IF ENR_ETABLISSEMENT<3><>"" THEN W_ADRESSEETAB=ENR_ETABLISSEMENT<3>:" "
    IF ENR_ETABLISSEMENT<4><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ETABLISSEMENT<4>:" "
    IF ENR_ETABLISSEMENT<5><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ETABLISSEMENT<5>:" "
    IF ENR_ETABLISSEMENT<6><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ETABLISSEMENT<6>
    IF ENR_ETABLISSEMENT<8><>"" THEN W_ADRESSEETAB2=ENR_ETABLISSEMENT<8>:" "
    IF ENR_ETABLISSEMENT<9><>"" THEN W_ADRESSEETAB2=W_ADRESSEETAB2:ENR_ETABLISSEMENT<9>

    * TEST SI ADRESSE ETAB RENSEIGNEE, SINON PREND ADRESSE ENTITE
    IF W_ADRESSEETAB="" AND W_ADRESSEETAB2="" THEN
        IF ENR_ASSOCIATION<3><>"" THEN W_ADRESSEETAB=ENR_ASSOCIATION<3>:" "
        IF ENR_ASSOCIATION<4><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ASSOCIATION<4>:" "
        IF ENR_ASSOCIATION<5><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ASSOCIATION<5>:" "
        IF ENR_ASSOCIATION<6><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ASSOCIATION<6>
        IF ENR_ASSOCIATION<8><>"" THEN W_ADRESSEETAB2=ENR_ASSOCIATION<8>:" "
        IF ENR_ASSOCIATION<9><>"" THEN W_ADRESSEETAB2=W_ADRESSEETAB2:ENR_ASSOCIATION<9>
    END    

    * TRONQUE LES DONNEES
    ENR_ASSOCIATION<1>=ENR_ASSOCIATION<1>[1,38]
    ENR_ETABLISSEMENT<1>=ENR_ETABLISSEMENT<1>[1,38]
    W_ADRESSEETAB=W_ADRESSEETAB[1,38]
    W_ADRESSEETAB2=W_ADRESSEETAB2[1,38]

    * ENTETE DU FICHIER
    ENR_TAMPONDADS<I>="ORGANISME SOCIAL : ":ENR_ORGANISMESOCIAL<1>:"NUMERO IDENTIFICATION : ":ENR_ORGANISMESOCIAL<19>
    ENR_TAMPONDADS<I+1>="****************************************************************************************************************"
    ENR_TAMPONDADS<I+2>="*ENTITE JURIDIQUE      : ":ENR_ASSOCIATION<1>:SPACE(41-LEN(ENR_ASSOCIATION<1>)):SPACE(15):"* SALAIRES  * MALADIE >2 MOIS *"
    ENR_TAMPONDADS<I+3>="*NUMERO DE SIRET       : ":ENR_ETABLISSEMENT<14>:SPACE(14-LEN(ENR_ETABLISSEMENT<14>)):SPACE(42):"*******************************"    
    ENR_TAMPONDADS<I+4>="*LIBELLE ETABLISSEMENT : ":ENR_ETABLISSEMENT<1>:SPACE(41-LEN(ENR_ETABLISSEMENT<1>)):SPACE(15):"*           *   DU   *   AU   *"
    ENR_TAMPONDADS<I+5>="*ADRESSE ETABLISSEMENT : ":W_ADRESSEETAB:SPACE(41-LEN(W_ADRESSEETAB)):SPACE(15):"* TOTALITE  *JJ/MM/AA*JJ/MM/AA*"
    ENR_TAMPONDADS<I+6>="*VILLE ETABLISSEMENT   : ":W_ADRESSEETAB2:SPACE(41-LEN(W_ADRESSEETAB2)):SPACE(15):"*           *        *        *"
    ENR_TAMPONDADS<I+7>="****************************************************************************************************************"
                                                                       
    I=I+7
RETURN

***********************************************************
* GESTION DADS SALARIE

20 *
 
    * RECUPERE BASE (SECU. + IMPOTS + TAXE SAL.)
    GOSUB 200

    W_MONTANTSALAIRE2=CONVERT(" ","",W_MONTANTSALAIRE)

    IF W_MONTANTSALAIRE2="0" THEN RETURN
    W_NBAIDANT=W_NBAIDANT+1

    W_PERIODEAIDANT=W_PERIODECONTRAT:W_PERIODECONTRAT2

    * CONCATENE LES INFOS
    * N SECU + NOM + PRENOM
    W_SECU=ENR_CIVILAIDANT<17>:"/":ENR_CIVILAIDANT<18>:SPACE(23-LEN(ENR_CIVILAIDANT<17>:"/":ENR_CIVILAIDANT<18>)):ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<3>
    IF ENR_CIVILAIDANT<4><>ENR_CIVILAIDANT<2> THEN
        W_SECU=W_SECU:" - ":ENR_CIVILAIDANT<2>
    END
    W_SECU=W_SECU[1,60]
    W_SECU=W_SECU "L#60"
    W_SECU=W_SECU:" DDN : ":W_DDN
    W_SECU=W_SECU "L#80"

    ENR_TAMPONDADS<I+1>="*":W_SECU:"*           *":W_ABSENCES1
    ENR_TAMPONDADS<I+2>="*":SPACE(2):W_PERIODEAIDANT:SPACE(78-LEN(W_PERIODEAIDANT)):"*":W_MONTANTSALAIRE:" *":W_ABSENCES2
    ENR_TAMPONDADS<I+3>="*--------------------------------------------------------------------------------*-----------*--------*--------*"

    I=I+3
RETURN

***********************************************************
* GESTION SAUT DE PAGE

30 *

    GOSUB 300
    GOSUB 301

    W_NOPAGE2=W_NOPAGE "L#3"

    * TOTAL DE LA PAGE
    ENR_TAMPONDADS<I>="****************************************************************************************************************"
    ENR_TAMPONDADS<I+1>="PERIODE DADS CRC: ":W_PERIODE:SPACE(45):"* TOTAUX PAR  *":W_MONTANTSALAIREPAGE:" *"
    ENR_TAMPONDADS<I+2>=SPACE(67):"*  FEUILLET   *           *"
    ENR_TAMPONDADS<I+3>="DATE EDITION    : ":OCONV(DATE(),"D4/"):SPACE(39):"*-------------*-----------*"
    ENR_TAMPONDADS<I+4>=SPACE(67):"*   TOTAUX    *           *"
    ENR_TAMPONDADS<I+5>="FEUILLET NUMERO : ":W_NOPAGE2:SPACE(46):"*   CUMULES   *":W_MONTANTSALAIREETAB:" *"
    ENR_TAMPONDADS<I+6>=SPACE(67):"***************************"
  
    I=I+7

    * SI 17 ALORS IMPRESSION SUR MATRICIELLE SINON LASER
    IF W_NBMAXAIDANT=10 THEN
	IF W_NBAIDANT<=W_NBMAXAIDANT THEN I=I+((W_NBMAXAIDANT-W_NBAIDANT)*3)+2
    END ELSE
	IF W_NBAIDANT<=W_NBMAXAIDANT THEN I=I+((W_NBMAXAIDANT-W_NBAIDANT)*3)+7
    END

    W_MONTANTSALAIREPAGE=0
    W_NBAIDANT=0

    W_MONTANTSALAIREETAB=W_MONTANTSALAIREETAB4

RETURN

***********************************************************
* IMPRIME LE TOTAL DE L'ENTITE

40 *

    GOSUB 302

    W_NOPAGE=W_NOPAGE+1
    W_NOPAGE=W_NOPAGE "L#3"

    IF ENR_ASSOCIATION<3><>"" THEN W_ADRESSEETAB=ENR_ASSOCIATION<3>:" "
    IF ENR_ASSOCIATION<4><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ASSOCIATION<4>:" "
    IF ENR_ASSOCIATION<5><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ASSOCIATION<5>:" "
    IF ENR_ASSOCIATION<6><>"" THEN W_ADRESSEETAB=W_ADRESSEETAB:ENR_ASSOCIATION<6>
    IF ENR_ASSOCIATION<8><>"" THEN W_ADRESSEETAB2=ENR_ASSOCIATION<8>:" "
    IF ENR_ASSOCIATION<9><>"" THEN W_ADRESSEETAB2=W_ADRESSEETAB2:ENR_ASSOCIATION<9>
    ENR_ASSOCIATION<2>=ENR_ASSOCIATION<2>[1,40]

    * ENTETE DU FICHIER
    ENR_TAMPONDADS<I+5>=SPACE(40):"BORDEREAU RECAPITULATIF"
    I=I+10

    ENR_TAMPONDADS<I>="ORGANISME SOCIAL : ":ENR_ORGANISMESOCIAL<1>:"NUMERO IDENTIFICATION : ":ENR_ORGANISMESOCIAL<19>
    ENR_TAMPONDADS<I+1>="*******************************************************************************************************"
    ENR_TAMPONDADS<I+2>="*ENTITE JURIDIQUE      : ":ENR_ASSOCIATION<1>:SPACE(41-LEN(ENR_ASSOCIATION<1>)):SPACE(24):"* SALAIRES  *"
    ENR_TAMPONDADS<I+3>="*NUMERO DE SIRET       : ":ENR_ETABLISSEMENT<14>:SPACE(14-LEN(ENR_ETABLISSEMENT<14>)):SPACE(51):"*************"    
    ENR_TAMPONDADS<I+4>="*LIBELLE ETABLISSEMENT : ":ENR_ETABLISSEMENT<1>:SPACE(41-LEN(ENR_ETABLISSEMENT<1>)):SPACE(24):"*           *"
    ENR_TAMPONDADS<I+5>="*ADRESSE ETABLISSEMENT : ":W_ADRESSEETAB:SPACE(41-LEN(W_ADRESSEETAB)):SPACE(24):"* TOTALITE  *"
    ENR_TAMPONDADS<I+6>="*VILLE ETABLISSEMENT   : ":W_ADRESSEETAB2:SPACE(41-LEN(W_ADRESSEETAB2)):SPACE(24):"*           *"
    ENR_TAMPONDADS<I+7>="*******************************************************************************************************"

    ENR_TAMPONDADS<I+8>="PERIODE DADS CRC: ":W_PERIODE:SPACE(54):"*   TOTAUX    *           *"
    ENR_TAMPONDADS<I+9>="DATE EDITION    : ":OCONV(DATE(),"D4/"):SPACE(48):"*             *":W_MONTANTSALAIREASSO:" *"
    ENR_TAMPONDADS<I+10>="FEUILLET NUMERO : ":W_NOPAGE:SPACE(55):"*   CUMULES   *           *"
    ENR_TAMPONDADS<I+11>=SPACE(76):"***************************"

RETURN

***********************************************************
* MISE EN TABLES DES BRC TYPE RETRAITE SALARIEE

50 * 

   W_CODERUBBRC=""
   REGROUPBRC = ""
   EXECUTE 'TSELECT REGROUPBRC AVEC 0 = "':W_ORG:']" AND AVEC TypeOrg = "03"'
   EXECUTE "SAUVE-LISTE REGROUPBRC"
   EXECUTE "LISTE REGROUPBRC" CAPTURING MSGCODE RETURNING MSGCODE
    
   IF MSGCODE<1>=209 THEN RETURN

   SELECT F.REGROUPBRC TO REGROUPBRC

   W_FINBRC="FAUX"
   LOOP
	READNEXT CLEBRC FROM REGROUPBRC ELSE W_FINBRC="VRAI"
	UNTIL W_FINBRC="VRAI" DO

	* LECTURE REGROUPBRC
	READ ENR_REGROUPBRC FROM F.REGROUPBRC,CLEBRC ELSE ENR_REGROUPBRC=""

	* PARCOURS RUB DU REGROUPEMENT
	M=1
	LOOP 
	     UNTIL ENR_REGROUPBRC<2,M>="" DO
	     
	     READ ENR_RUBCHARGE FROM F.RUBCHARGE, ENR_REGROUPBRC<2,M> THEN
	     READ ENR_TRANCHE FROM F.TRANCHE, ENR_RUBCHARGE<2> THEN 
	     
	     	  IF ENR_TRANCHE<10> > 4 THEN ENR_TRANCHE<10> = 1
		
	        * RECHERCHE SI CODE RUB CHARGE PAS DEJA TRAITEE
	        L=1
	        LOOP
	          UNTIL W_CODERUBBRC<ENR_TRANCHE<10>,L>="" OR W_CODERUBBRC<ENR_TRANCHE<10>,L>=ENR_REGROUPBRC<2,M> DO
	          L=L+1
	        REPEAT

	        IF W_CODERUBBRC<ENR_TRANCHE<10>,L>="" THEN 
			W_CODERUBBRC<ENR_TRANCHE<10>,L>=ENR_REGROUPBRC<2,M>
              END

	     END
	     END

	     M=M+1

	REPEAT
   REPEAT
    
RETURN

***********************************************************
* RECHERCHE + STOCKE INFORMATION CONCERNANT L'AIDANT

100 *

    W_ABSENCES1=""
    W_ABSENCES2=""

    * LECTURE CIVILAIDANT
    READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CLE[1,5] ELSE ENR_CIVILAIDANT=""

    W_AIDANT=CLE[1,5]

    W_DDN=OCONV(ENR_CIVILAIDANT<26>,"D4/")

    * SELECTIONNE LES CONTRATS VALIDE SUR L'ANNEE, PRESTATAIRE ET A L'ENTITE
    ABSENCES = ""
    EXECUTE 'TSELECT ABSENCESAIDANT AVEC 0 = "':W_AIDANT:']" AND AVEC DureeAbs > "60" AND AVEC NumMotifAidant <= "06" AND AVEC DebAbsAidant <= "':W_FINAN:'" AND AVEC 2 >= "':W_DEBUTAN:'"'
    EXECUTE "SAUVE-LISTE ABSENCES"
    EXECUTE "LISTE ABSENCES" CAPTURING MSGCODE RETURNING MSGCODE
    
    IF MSGCODE<1>=209 THEN
        W_ABSENCES1="        *        *"
        W_ABSENCES2="        *        *"
        RETURN  
    END

    SELECT F.ABSENCESAIDANT TO ABSENCES

    W_FINABS="FAUX"
    LOOP
	READNEXT CLEABS FROM ABSENCES ELSE W_FINABS="VRAI"
	UNTIL W_FINABS="VRAI" DO
	
	READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,CLEABS ELSE ENR_ABSENCESAIDANT=""

	IF W_ABSENCES1="" THEN 
	    W_ABSENCES1=OCONV(CLEABS[8,5],"D2/"):"*":OCONV(ENR_ABSENCESAIDANT<2>,"D2/"):"*"
	END ELSE
	    IF W_ABSENCES2="" THEN W_ABSENCES2=OCONV(CLEABS[8,5],"D2/"):"*":OCONV(ENR_ABSENCESAIDANT<2>,"D2/"):"*"
	END
    REPEAT

    IF W_ABSENCES2="" THEN 
	W_ABSENCES2=W_ABSENCES1
	W_ABSENCES1="        *        *"
    END

RETURN

***********************************************************
* RECUPERE INFORMATION BASE (SECU. + IMPOTS + TAXE SAL.)

200 *
     

    * LECTURE HISTORCUMUL
    READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_AIDANT:W_PERIODE:W_CODEENTITE ELSE ENR_HISTORCUMUL=""
    IF ENR_HISTORCUMUL<23> # "" THEN
	    READ ENR_HISTORCUMUL FROM F.HISTORCUMULETABL,W_AIDANT:W_PERIODE:ENR_CONTRAT<3> ELSE ENR_HISTORCUMUL=""
    END
    W_MONTANTSALAIRE=0

    FOR W_Tranche = 1 TO 4	
    * tranches de 1  4 dc de totalit  Tranche C
    * RECUPERATION BASE CSG-CRDS + URSSAF + TRANCHE A + TAXE SALAIRE
    K=1
    W_Trouve1Rub = "F"
    LOOP
	 UNTIL ENR_HISTORCUMUL<15,K>="" OR W_Trouve1Rub = "V" DO

	 L=1
	 LOOP
	      UNTIL W_CODERUBBRC<W_Tranche,L>="" OR W_CODERUBBRC<W_Tranche,L>=ENR_HISTORCUMUL<15,K> DO
	      L=L+1
	 REPEAT	
   
	 IF W_CODERUBBRC<W_Tranche,L>=ENR_HISTORCUMUL<15,K> THEN
	      W_MONTANTSALAIRE=W_MONTANTSALAIRE+INT((ENR_HISTORCUMUL<17,K>/100)+1/2)
	      W_MONTANTSALAIREPAGE=W_MONTANTSALAIREPAGE+INT((ENR_HISTORCUMUL<17,K>/100)+1/2)
		W_Trouve1Rub = "V"
	 END

	 K=K+1	 
    REPEAT

    NEXT W_Tranche
    
    * STOCKE LES BASES AFIN D'INSERER SEPARATEUR MILLIER
    IF W_MONTANTSALAIRE>999 AND W_MONTANTSALAIRE<>0 THEN 
         W_MONTANTSALAIRE2=LEN(W_MONTANTSALAIRE)
         W_MONTANTSALAIRE=W_MONTANTSALAIRE[1,W_MONTANTSALAIRE2-3]:".":W_MONTANTSALAIRE[W_MONTANTSALAIRE2-2,3]
    END



    W_MONTANTSALAIRE=W_MONTANTSALAIRE "R#10"
RETURN

***********************************************************
* MISE EN FORME TOTAL PAGE

300 *

    W_MONTANTSALAIREETAB=W_MONTANTSALAIREETAB+W_MONTANTSALAIREPAGE
    W_MONTANTSALAIREASSO=W_MONTANTSALAIREASSO+W_MONTANTSALAIREPAGE

    * STOCKE LES BASES AFIN D'INSERER SEPARATEUR MILLIER + MILLIONS   
    IF W_MONTANTSALAIREPAGE>999 AND W_MONTANTSALAIREPAGE<>0 THEN 
         W_MONTANTSALAIREPAGE2=LEN(W_MONTANTSALAIREPAGE)
         IF W_MONTANTSALAIREPAGE>999999 THEN
             W_MONTANTSALAIREPAGE3=W_MONTANTSALAIREPAGE[1,W_MONTANTSALAIREPAGE2-6]:"."
	     W_MONTANTSALAIREPAGE=W_MONTANTSALAIREPAGE[W_MONTANTSALAIREPAGE2-5,W_MONTANTSALAIREPAGE2]
	     W_MONTANTSALAIREPAGE2=LEN(W_MONTANTSALAIREPAGE)
	     W_MONTANTSALAIREPAGE=W_MONTANTSALAIREPAGE[W_MONTANTSALAIREPAGE2-6,W_MONTANTSALAIREPAGE2-3]:".":W_MONTANTSALAIREPAGE[W_MONTANTSALAIREPAGE2-2,3]
             W_MONTANTSALAIREPAGE=W_MONTANTSALAIREPAGE3:W_MONTANTSALAIREPAGE
         END ELSE
             W_MONTANTSALAIREPAGE=W_MONTANTSALAIREPAGE[W_MONTANTSALAIREPAGE2-6,W_MONTANTSALAIREPAGE2-3]:".":W_MONTANTSALAIREPAGE[W_MONTANTSALAIREPAGE2-2,3]
	 END  
    END

    W_MONTANTSALAIREPAGE=W_MONTANTSALAIREPAGE "R#10"
RETURN

***********************************************************
* MISE EN FORME TOTAL ETABLISSEMENT

301 *

    W_MONTANTSALAIREETAB4=W_MONTANTSALAIREETAB

    * STOCKE LES BASES AFIN D'INSERER SEPARATEUR MILLIER + MILLIONS   
    IF W_MONTANTSALAIREETAB>999 AND W_MONTANTSALAIREETAB<>0 THEN 
         W_MONTANTSALAIREETAB2=LEN(W_MONTANTSALAIREETAB)
         IF W_MONTANTSALAIREETAB>999999 THEN
             W_MONTANTSALAIREETAB3=W_MONTANTSALAIREETAB[1,W_MONTANTSALAIREETAB2-6]:"."
	     W_MONTANTSALAIREETAB=W_MONTANTSALAIREETAB[W_MONTANTSALAIREETAB2-5,W_MONTANTSALAIREETAB2]
	     W_MONTANTSALAIREETAB2=LEN(W_MONTANTSALAIREETAB)
	     W_MONTANTSALAIREETAB=W_MONTANTSALAIREETAB[W_MONTANTSALAIREETAB2-6,W_MONTANTSALAIREETAB2-3]:".":W_MONTANTSALAIREETAB[W_MONTANTSALAIREETAB2-2,3]
             W_MONTANTSALAIREETAB=W_MONTANTSALAIREETAB3:W_MONTANTSALAIREETAB
         END ELSE
             W_MONTANTSALAIREETAB=W_MONTANTSALAIREETAB[W_MONTANTSALAIREETAB2-6,W_MONTANTSALAIREETAB2-3]:".":W_MONTANTSALAIREETAB[W_MONTANTSALAIREETAB2-2,3]
	 END  
    END

    W_MONTANTSALAIREETAB=W_MONTANTSALAIREETAB "R#10"
RETURN

***********************************************************
* MISE EN FORME TOTAL ASSOCIATION

302 *

    * STOCKE LES BASES AFIN D'INSERER SEPARATEUR MILLIER + MILLIONS   
    IF W_MONTANTSALAIREASSO>999 AND W_MONTANTSALAIREASSO<>0 THEN 
         W_MONTANTSALAIREASSO2=LEN(W_MONTANTSALAIREASSO)
         IF W_MONTANTSALAIREASSO>999999 THEN
             W_MONTANTSALAIREASSO3=W_MONTANTSALAIREASSO[1,W_MONTANTSALAIREASSO2-6]:"."
	     W_MONTANTSALAIREASSO=W_MONTANTSALAIREASSO[W_MONTANTSALAIREASSO2-5,W_MONTANTSALAIREASSO2]
	     W_MONTANTSALAIREASSO2=LEN(W_MONTANTSALAIREASSO)
	     W_MONTANTSALAIREASSO=W_MONTANTSALAIREASSO[W_MONTANTSALAIREASSO2-6,W_MONTANTSALAIREASSO2-3]:".":W_MONTANTSALAIREASSO[W_MONTANTSALAIREASSO2-2,3]
             W_MONTANTSALAIREASSO=W_MONTANTSALAIREASSO3:W_MONTANTSALAIREASSO
         END ELSE
             W_MONTANTSALAIREASSO=W_MONTANTSALAIREASSO[W_MONTANTSALAIREASSO2-6,W_MONTANTSALAIREASSO2-3]:".":W_MONTANTSALAIREASSO[W_MONTANTSALAIREASSO2-2,3]
	 END  
    END

    W_MONTANTSALAIREASSO=W_MONTANTSALAIREASSO "R#10"
RETURN

***********************************************************
* INITIALISATION DES VARIABLES

999 *
  ENR_TAMPONDADS=""
  W_PERIODECONTRAT=""
  W_PERIODECONTRAT2=""
  W_AIDANT=""
  W_ADRESSEETAB=""
  W_ADRESSEETAB2=""
  W_DDN=""
  W_NBAIDANT=0
  W_NOPAGE=0
  W_NOPAGE2=0
  W_SECU=""
  W_ANCIENETAB=""
  W_REQVIDE="FAUX"
  W_CODEETABLISSEMENT="001001"
  W_MONTANTSALAIRE2=0
  W_MONTANTSALAIREPAGE=0
  W_MONTANTSALAIREETAB=0
  W_MONTANTSALAIREETAB2=0 
  W_MONTANTSALAIREASSO=0
  W_MOTIF=""
RETURN
