**********************************************************
* Generation du fichier IRCEM
* Programme chaine a partir d'un projet VB
* Moulin christophe
* MAJ du 22/11 : on n'a pas prevu d'indiquer la devise 
* (car l'IRCEM ne le demande pas dans son fichier)
* mais les clients passant  l'euro au 1er 12 2001
* nous obligent  considrer leur cas...
**********************************************************
**********************************************************
* Modification le 18/10/2007
* Par Priscilla
* Changement du nom des fichiers
* Actuellement dfinis comme suit :
*		- Code entit juridique : 3n
*		- N de contrat prvoyance : 2n
*		- N ordre : 1n
* Va tre dfinis comme suit :
*		- N de structure = identifiant de l'association auprs de l'ircem : 5n
*		- Trimestre : sous forme ntrimestre : T:anne (ex: 1T07=1er Trimestre 2007) : 4n
*		- N ordre : 1n
* Le sparateur de champ sera '_'
**********************************************************

**********************************************************
* Ouvertures des fichiers
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","CENTREURSSAF" TO F.CENTREURSSAF ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","CONTRATSPREV" TO F.CONTRATSPREV ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","ELTSFACTAIDE" TO F.ELTSFACTAIDE ELSE STOP
OPEN "","ELTSPARTEMP" TO F.ELTSPARTEMP ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","PREVOYANCE" TO F.PREVOYANCE ELSE STOP
OPEN "","RAPPORTPREV" TO F.RAPPORTPREV ELSE STOP
OPEN "","RIBAIDANT" TO F.RIBAIDANT ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP

*********************************************************
* Recuperation des arguments
PROCREAD ARGUMENTS ELSE STOP
W_CodeAsso=FIELD(ARGUMENTS,"|",2)
W_CboTrimestre=FIELD(ARGUMENTS,"|",3)
W_CodeContratsPrev=FIELD(ARGUMENTS,"|",4)
W_TraitIrcemOblig=FIELD(ARGUMENTS,"|",5)

*********************************************************
*Initialisation des variables
W_RienSelect="FAUX"
W_DatDebTri=""
W_DatFinTri=""
W_Fini="FAUX"
W_Temp=""
W_TempBis=""
W_AnneeTrimestre=""
W_NumTrimestre=""
W_Len=0
ENR_PREVOYANCE=""
ENR_RAPPORTPREV=""
** modif priscilla
ENR_CONTRATSPREV=""
W_TrimAnnee=""
W_TrimestreCode=""
** Fin modif
W_RequetePrev=""
W_RequeteAct=""
W_Concat=""
W_Count=0
W_Cle=""
W_CleAide=""
W_Heures=0
W_BrutHoraire=0
W_CumulHeures=0
W_CumulBrut=0
W_CumulBrutHoraireExo=0
W_CumulBrutHoraireNonExo=0
W_CotiIrcem=0
W_CumulCotiIrcem=0
W_PrevExiste="FAUX"
W_CumulBrutHoraireExoSsPrev=0
W_CumulBrutHoraireNonExoSsPrev=0
W_CumulCotiIrcemSsPrev=0
W_Identi=""

W_CumulHeuresTot=0
W_CumulBrutHoraireExoTot=0
W_CumulBrutHoraireNonExoTot=0
W_CumulCotiIrcemTot=0

* Initialisation des requetes
W_RequeteContrat=""

******************************************
* Programme principal
*
* Pose les bornes du trimestre
    W_Len=LEN(W_CboTrimestre)
    W_Temp=W_CboTrimestre
    W_AnneeTrimestre=W_CboTrimestre[W_Len-3,4]
    W_NumTrimestre=W_CboTrimestre[1,1]
    W_Len=""	
	
	** Modif Priscilla
	W_TrimAnnee = W_AnneeTrimestre[3,2]
	W_TrimestreCode = W_NumTrimestre : "T" : W_TrimAnnee
	** FIN MODIF
	
    BEGIN CASE
        CASE W_NumTrimestre="1"
            W_DatDebTri=ICONV("01/01/":W_AnneeTrimestre,"D4/")
            W_DatFinTri=ICONV("31/03/":W_AnneeTrimestre,"D4/")
        CASE W_NumTrimestre="2"
            W_DatDebTri=ICONV("01/04/":W_AnneeTrimestre,"D4/")
            W_DatFinTri=ICONV("30/06/":W_AnneeTrimestre,"D4/")
        CASE W_NumTrimestre="3"
            W_DatDebTri=ICONV("01/07/":W_AnneeTrimestre,"D4/")
            W_DatFinTri=ICONV("30/09/":W_AnneeTrimestre,"D4/")
        CASE W_NumTrimestre="4"
            W_DatDebTri=ICONV("01/10/":W_AnneeTrimestre,"D4/")
            W_DatFinTri=ICONV("31/12/":W_AnneeTrimestre,"D4/")
    END CASE

    EXECUTE 'VIDER-FICHIER RAPPORTPREV'
*    EXECUTE 'VIDER-FICHIER PREVOYANCE'

    READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE ENR_CONSTANTESPAIE<9> = "99999"
    IF ENR_CONSTANTESPAIE<9> > W_DatFinTri THEN
	* On ne converti rien !
	W_DatePassageEuro = 0
    END ELSE
	W_DatePassageEuro = ENR_CONSTANTESPAIE<9>
    END

	W_PlafondSecu=ENR_CONSTANTESPAIE<1,1> / 100
	W_TauxHorPlaSecu = W_PlafondSecu /17400
	W_TauxHorPlaSecu=INT(W_TauxHorPlaSecu*100+1/2)	

* Calcul de la valeur du SMIC
	W_TabValSmic=""
    W_DebMoisTri=OCONV(W_DatDebTri,"D4/")
    W_DebMoisTri=W_DebMoisTri[7,4]:W_DebMoisTri[4,2]

    FOR i=0 TO 2 
       j = 1
       LOOP
          W_Temp= OCONV(EXTRACT(ENR_CONSTANTESPAIE,4, j),"D4/")
          W_Temp=W_Temp[7,4]:W_Temp[4,2]
       WHILE W_DebMoisTri+i < W_Temp OR W_Temp=""
          j = j + 1
       REPEAT
       W_TabValSmic =REPLACE(W_TabValSmic,i+1;EXTRACT(ENR_CONSTANTESPAIE,3, j))
    NEXT i

    W_Temp=EXTRACT(W_TabValSmic,1)
    IF W_Temp=EXTRACT(W_TabValSmic,2) AND W_Temp=EXTRACT(W_TabValSmic,3) THEN
       W_ValSmic=W_Temp/100
    END ELSE
       W_ValSmic=W_Temp+EXTRACT(W_TabValSmic,2)+EXTRACT(W_TabValSmic,3)
       W_ValSmic=W_ValSmic/3
       W_ValSmic=W_ValSmic/100
    END
	
    READ ENR_TABLES FROM F.TABLES,"MOTIFSORTIE" ELSE PRINT "MOTIFSORTIE"
    W_Motif=INDEX(ENR_TABLES<3>,"DECES",1)
    IF W_Motif # 0 THEN
       W_Motif=ENR_TABLES[1,W_Motif]
       W_Motif = ENR_TABLES<2,DCOUNT(W_Motif,CHAR(253))>
    END

    READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CodeAsso ELSE PRINT "Association"

   LigneFic=1
   GOSUB 10
   GOSUB 20
   GOSUB 30
   GOSUB 100

   W_NbFichier=1
   W_Fini="FAUX"
   LOOP
      READNEXT W_CleContrat FROM W_RequeteContrat ELSE W_Fini="VRAI"
   WHILE W_Fini#"VRAI" DO
      READ ENR_CONTRAT FROM F.CONTRAT,W_CleContrat ELSE PRINT "CONTRAT"
      W_CleAide=ENR_CONTRAT<3>
      READ ENR_ELTSPARTEMP FROM F.ELTSPARTEMP,W_CleAide ELSE PRINT "Eltspartemp"
      W_ClePrev=ENR_CONTRAT<29>
      W_PrevExiste="FAUX"
      IF W_ClePrev # "" THEN
         IF ENR_ELTSPARTEMP<5> <= W_DatFinTri THEN
            IF ENR_ELTSPARTEMP<6> = "" OR ENR_ELTSPARTEMP<6> >= W_DatDebTri THEN
               k=1
               LOOP
               WHILE W_ClePrev # W_RequetePrev<k,1> DO
                  k=k+1
               REPEAT
               W_PrevExiste="VRAI"
            END
         END
      END
      GOSUB 110
*     IF LigneFic=2300 THEN
*         GOSUB 120
*         WRITE ENR_PREVOYANCE ON F.PREVOYANCE,W_CodeAsso:W_CodeContratsPrev:W_NbFichier

		*W_CumulHeuresTot=W_CumulHeuresTot + W_CumulHeures
		*W_CumulBrutHoraireExoTot=W_CumulBrutHoraireExoTot + W_CumulBrutHoraireExo
		*W_CumulBrutHoraireNonExoTot=W_CumulBrutHoraireNonExoTot + W_CumulBrutHoraireNonExo
		*W_CumulCotiIrcemTot=W_CumulCotiIrcemTot + W_CumulCotiIrcem

		*Ecriture du rapport d'execution
*        GOSUB 5
*        ENR_PREVOYANCE=""
*        W_NbFichier=W_NbFichier + 1   

*		W_RequetePrev=W_RequetePrevSauve

*		W_CumulHeures=0
*		W_CumulBrutHoraireExo=0
*		W_CumulBrutHoraireNonExo=0
*		W_CumulCotiIrcem=0

*		LigneFic=1
*		GOSUB 100
*	 END
   REPEAT

   GOSUB 120

*  IF W_NbFichier # 1 THEN
*  	WRITE ENR_PREVOYANCE ON F.PREVOYANCE,W_CodeAsso:W_CodeContratsPrev:W_NbFichier
*  END ELSE
*  	WRITE ENR_PREVOYANCE ON F.PREVOYANCE,W_CodeAsso:W_CodeContratsPrev:W_NbFichier
*  END

*   W_CumulHeuresTot=W_CumulHeuresTot + W_CumulHeures
*   W_CumulBrutHoraireExoTot=W_CumulBrutHoraireExoTot + W_CumulBrutHoraireExo
*   W_CumulBrutHoraireNonExoTot=W_CumulBrutHoraireNonExoTot + W_CumulBrutHoraireNonExo
*   W_CumulCotiIrcemTot=W_CumulCotiIrcemTot + W_CumulCotiIrcem

   * Ecriture du rapport d'execution
   GOSUB 5

STOP


***************************************************************************************
* Ecriture du rapport d'execution
5
**** Modif Priscilla
	READ ENR_CONTRATSPREV FROM F.CONTRATSPREV, W_CodeContratsPrev ELSE PRINT "Contrat Prevoyance"
    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,1;W_CodeAsso)
*	ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,2;W_TrimestreCode)
    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,2;LigneFic)
**** Fin modif
*    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,2;W_Ligne)
*    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,3;INT(W_CumulHeuresTot))
*    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,4;INT(W_CumulBrutHoraireExoTot))
*    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,5;INT(W_CumulBrutHoraireNonExoTot))
*    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,6;INT(W_CumulCotiIrcemTot))
    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,3;INT(W_CumulHeures))
    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,4;INT(W_CumulBrutHoraireExo))
    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,5;INT(W_CumulBrutHoraireNonExo))
    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,6;INT(W_CumulCotiIrcem))
    i=1
    j=2
    LOOP
    WHILE W_RequetePrev<i,1> # "" DO
       IF W_RequetePrev<i,6> # "" THEN
           ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,4,j;INT(W_RequetePrev<i,6>))
       END ELSE
           ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,4,j;0)
       END
       IF W_RequetePrev<i,7> # "" THEN
           ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,5,j;INT(W_RequetePrev<i,7>))
       END ELSE
           ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,5,j;0)
       END
       IF W_RequetePrev<i,8> # "" THEN
           ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,6,j;INT(W_RequetePrev<i,8>))
       END ELSE
           ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,6,j;0)
       END
       ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,7,j;W_RequetePrev<i,2>)
       j=j+1
       i=i+1
    REPEAT

    WRITEU ENR_RAPPORTPREV ON F.RAPPORTPREV,"RAPPORT_" : ENR_CONTRATSPREV<32> : "_" : W_TrimestreCode
	WRITE ENR_PREVOYANCE ON F.RAPPORTPREV, ENR_CONTRATSPREV<32> : "_" : W_TrimestreCode
RETURN

******************************************
* Requete sur contrat
10 
   IF W_CodeContratsPrev # "" THEN
      IF W_TraitIrcemOblig="0" THEN
         EXECUTE 'SSELECT CONTRAT AVEC 29 = "':W_CodeContratsPrev:'" AND AVEC 65 # "O" AND AVEC 1 = "02" AND AVEC 2 = "':W_CodeAsso:'" AND AVEC 7 <= "':W_DatFinTri:'" AND AVEC 8 >= "':W_DatDebTri:'" OR = "" PAR NomAideContrat PAR PrenomAideContrat PAR 3 PAR NomPrenomAidantContrat PAR CodeAidant'
      END ELSE
         EXECUTE 'SSELECT CONTRAT AVEC 29 = "':W_CodeContratsPrev:'" OR = "" AND AVEC 65 # "O" AND AVEC 1 = "02" AND AVEC 2 = "':W_CodeAsso:'" AND AVEC 7 <= "':W_DatFinTri:'" AND AVEC 8 >= "':W_DatDebTri:'" OR = "" PAR NomAideContrat PAR PrenomAideContrat PAR 3 PAR NomPrenomAidantContrat PAR CodeAidant'
      END
   END ELSE
      EXECUTE 'SSELECT CONTRAT AVEC 65 # "O" AND AVEC 1 = "02" AND AVEC 2 = "':W_CodeAsso:'" AND AVEC 7 <= "':W_DatFinTri:'" AND AVEC 8 >= "':W_DatDebTri:'" OR = "" PAR NomAideContrat PAR PrenomAideContrat PAR 3 PAR NomPrenomAidantContrat PAR CodeAidant'
   END  
   EXECUTE 'SAUVE-LISTE W_RequeteContrat'
   EXECUTE "LISTE W_RequeteContrat" RETURNING MSGCODE
   IF MSGCODE<1>=209 THEN
      ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,1;"VIDE")
      WRITEU ENR_RAPPORTPREV ON F.RAPPORTPREV,"1"
      STOP
   END ELSE
      SELECT F.CONTRAT TO W_RequeteContrat
   END

RETURN
**************************************************************************
* Requete sur Contratsprev l'Ircem supplmentaire
20
    W_CodeOrg=""
    i=1
    IF W_CodeContratsPrev ="" THEN
       W_Fini="FAUX" 
       EXECUTE 'SSELECT CONTRATSPREV AVEC 22 = "02" AND AVEC 35 # ""'
       LOOP
          READNEXT W_CleContratPrev ELSE W_Fini="VRAI"
       WHILE W_Fini="FAUX" DO
          GOSUB 25
          i=i+1
       REPEAT
    END ELSE
       W_CleContratPrev=W_CodeContratsPrev
       GOSUB 25
    END
    IF W_CodeOrg="" THEN
       GOSUB 40
    END

RETURN

******************************************
* Rempli le tableau des Ircem supplementaires.
25

    READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,W_CleContratPrev ELSE PRINT "CONTRATSPREV"
    W_RequetePrev=REPLACE(W_RequetePrev,i,1;W_CleContratPrev)
    W_CodeOrg=ENR_CONTRATSPREV<2>
    W_RequetePrev=REPLACE(W_RequetePrev,i,2;ENR_CONTRATSPREV<3>)
    W_RequetePrev=REPLACE(W_RequetePrev,i,3;ENR_CONTRATSPREV<4>)
    W_RequetePrev=REPLACE(W_RequetePrev,i,4;ENR_CONTRATSPREV<32>)
    iRub=1
    LOOP
    WHILE ENR_CONTRATSPREV<35,iRub> # "" DO
       W_RequetePrev<i,5,iRub>=ENR_CONTRATSPREV<35,iRub>
       iRub=iRub+1
    REPEAT

   W_RequetePrevSauve=W_RequetePrev

RETURN
******************************************
* Requete sur les activites mandataires de l'association choisie
 30 W_FiniAct="FAUX"
    EXECUTE 'SSELECT ACTIVITES AVEC 0 = "':W_CodeAsso:']" AND AVEC 12 = "M"'
    iAct=1
    LOOP
       READNEXT W_CleAct ELSE W_FiniAct="VRAI"
    WHILE W_FiniAct="FAUX" DO
       W_RequeteAct=REPLACE(W_RequeteAct,iAct;W_CleAct)
       iAct=iAct+1
    REPEAT
RETURN

**************************************************************************
* Requete sur Contratsprev pour l'Ircem obligatoire
40 
   EXECUTE 'SSELECT CONTRATSPREV AVEC 22 = "02" AND AVEC 35 = ""'
   READNEXT W_CleIrObl THEN
      READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,W_CleIrObl ELSE PRINT "CONTRATSPREV"
      W_CodeOrg=ENR_CONTRATSPREV<2>
   END ELSE 
      W_CodeOrg=""
   END
RETURN

**********************************************************
* ENTETE
100 
  * Identifiant
    W_Concat=""
    W_Identi=W_RequetePrev<1,3>
    W_Identi=W_Identi "R%6"
    W_Identi=W_Identi:W_AnneeTrimestre:W_NumTrimestre:"1"

    W_Concat=W_Concat:W_Identi

    LigneFic=LigneFic "R%6"
    W_Concat=W_Concat:LigneFic

  * Enregistrement
    W_Concat=W_Concat:"1021"

  * Emetteur
    W_Temp=OCONV(DATE(),"D4/")
    W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]

    W_Concat=W_Concat:ENR_ASSOCIATION<1> "L#50"

  * Association
    W_Temp=W_RequetePrev<1,4>
    W_Temp=W_Temp "R%5"
    W_Concat=W_Concat:W_Temp
    W_Concat=W_Concat:"51"

    W_Temp=EXTRACT(ENR_ASSOCIATION,1) "L#35"
    W_Concat=W_Concat:W_Temp

    W_TabAdr=ENR_ASSOCIATION
    iAdr=3
    GOSUB 140
    IF W_Adr1 = "" THEN
       W_Temp=EXTRACT(ENR_ASSOCIATION,7) "L#35"
       W_Concat=W_Concat:W_Temp
       W_Concat=W_Concat:SPACE(70)
    END ELSE
       W_Adr1=W_Adr1[1,35]
       W_Adr1=W_Adr1 "L#35"
       W_Concat=W_Concat:W_Adr1
       W_Concat=W_Concat:SPACE(35)
       W_Temp=EXTRACT(ENR_ASSOCIATION,7) "L#35"
       W_Concat=W_Concat:W_Temp
    END

    W_Temp=EXTRACT(ENR_ASSOCIATION,8)
    IF W_Temp="" THEN
       W_Temp="00000"
    END
    W_Concat=W_Concat:W_Temp
  
    W_Temp=EXTRACT(ENR_ASSOCIATION,9) "L#35"
    W_Concat=W_Concat:W_Temp

    W_Temp=EXTRACT(ENR_ASSOCIATION,14) "L#13"
    W_Concat=W_Concat:W_Temp:SPACE(38)

    W_Temp=EXTRACT(ENR_ASSOCIATION,12)   
    W_Len=LEN(W_Temp)
    W_TempBis=""
    FOR i=1 TO W_Len
       IF W_Temp[i,1] # " " THEN
          W_TempBis=W_TempBis:W_Temp[i,1]
       END
    NEXT i

    W_Temp=W_TempBis "L#10"
    W_Concat=W_Concat:W_Temp:SPACE(272)

    ENR_PREVOYANCE=REPLACE(ENR_PREVOYANCE,LigneFic;W_Concat)
    LigneFic=LigneFic+1

RETURN        

******************************************
* DETAIL
110 
   GOSUB 130

  * Identifiant
    W_Concat=W_Identi

    LigneFic=LigneFic "R%6"
    W_Concat=W_Concat:LigneFic

  * Enregistrement
    W_Concat=W_Concat:"2021"

  * Contrat

    W_Temp=W_CodeOrg
    W_Temp=W_Temp "L#5"
    W_Concat=W_Concat:W_Temp

    IF W_ClePrev # "" AND ENR_ELTSPARTEMP<5> # ""THEN
       W_Temp=W_RequetePrev<k,2>
       W_Temp=W_Temp "L#7"
       W_Concat=W_Concat:W_Temp
    END ELSE
       W_Concat=W_Concat:"       "  ;* 7 espaces
    END
    W_Concat=W_Concat:W_AnneeTrimestre:"0":W_NumTrimestre
    W_Concat=W_Concat:"T"

   * Employeur
   READ ENR_CENTREURSSAF FROM F.CENTREURSSAF,ENR_ELTSPARTEMP<1> ELSE PRINT "CentreUrassaf"

   W_Len=LEN(ENR_ELTSPARTEMP<2>)
   W_TempBis=""
   FOR i=1 TO W_Len
      IF ENR_ELTSPARTEMP<2>[i,1] # " " THEN
         W_TempBis=W_TempBis:ENR_ELTSPARTEMP<2>[i,1]
      END
   NEXT i

   IF ENR_CENTREURSSAF<16> = "000" OR ENR_CENTREURSSAF<16> = "" THEN	
	W_Temp=W_TempBis
	W_Temp2=W_Temp[4,15]
	W_Temp2=W_Temp2"R%15"
	W_Temp=W_Temp[1,3]
	W_Temp = W_Temp"R%3"
   END ELSE
	W_Temp=ENR_CENTREURSSAF<16>
   	W_Temp=W_Temp "R%3"
	W_TempBis=W_TempBis[1,15]
	W_Temp2=W_TempBis"R%15"
   END
   W_Concat=W_Concat:W_Temp

   
   W_Concat=W_Concat:W_Temp2

   W_Concat=W_Concat:"05"

   W_Temp=W_CleAide "L#20"
   W_Concat=W_Concat:W_Temp

   READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CleAide ELSE PRINT "Civilaide"
   W_Temp=ENR_CIVILAIDE<1> "L#3"
   W_Concat=W_Concat:W_Temp

   W_Situation=ENR_CIVILAIDE<25>
   W_Temp=" "
   BEGIN CASE
      CASE W_Situation="1" OR W_Situation="6"
         W_Temp="M"
      CASE W_Situation="2" OR W_Situation="5"
         W_Temp="C"
      CASE W_Situation="3"
         W_Temp="V"
      CASE W_Situation="4"
         W_Temp="D"
   END CASE
   W_Concat=W_Concat:W_Temp

   W_Temp=ENR_CIVILAIDE<2>
   W_Temp=W_Temp[1,30]
   W_Temp=W_Temp "L#30"
   W_Concat=W_Concat:W_Temp   

   W_Temp=ENR_CIVILAIDE<3>
   W_Temp=CONVERT("-"," ",W_Temp)
   W_Temp=W_Temp[1,20]
   W_Temp=W_Temp "L#20"
   W_Concat=W_Concat:W_Temp   

   W_TabAdr=ENR_CIVILAIDE
   iAdr=5
   GOSUB 140
   IF W_Adr1 = "" THEN
      W_Temp=EXTRACT(ENR_CIVILAIDE,9) "L#32"
      W_Concat=W_Concat:W_Temp
      W_Concat=W_Concat:SPACE(32)
   END ELSE
      W_Adr1=W_Adr1[1,32]
      W_Adr1=W_Adr1 "L#32"
      W_Concat=W_Concat:W_Adr1
      W_Temp=EXTRACT(ENR_CIVILAIDE,9) "L#32"
      W_Concat=W_Concat:W_Temp
   END

   W_Temp=EXTRACT(ENR_CIVILAIDE,10)
   IF W_Temp="" THEN
      W_Temp="00000"
   END
   W_Concat=W_Concat:W_Temp
  
   W_Temp=EXTRACT(ENR_CIVILAIDE,11) "L#26"
   W_Concat=W_Concat:W_Temp

   IF ENR_CIVILAIDE<20> <> "" THEN
      W_Temp=OCONV(ENR_CIVILAIDE<20>,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END ELSE
      W_Concat=W_Concat:"        " ;* 8 espaces
   END

   IF ENR_CIVILAIDE<43> <> "" AND W_Motif # 0 THEN
      W_Temp=OCONV(ENR_CIVILAIDE<43>,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END ELSE
      W_Concat=W_Concat:"        " ;* 8 espaces
   END

   READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CleAide THEN
  
      W_DatePlusAncien="99999"
      W_Len=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
      FOR i=1 TO W_Len
        j=1
        LOOP
        WHILE W_RequeteAct<j> # "" DO
           IF W_RequeteAct<j> = ENR_ACTIVITESAIDE<1,i> THEN
              IF ENR_ACTIVITESAIDE<2,i> # "" THEN
                  IF W_DatePlusAncien > ENR_ACTIVITESAIDE<2,i> THEN
                      W_DatePlusAncien = ENR_ACTIVITESAIDE<2,i>
                  END
              END
           END
           j=j+1
        REPEAT
      NEXT i
   END ELSE
      W_DatePlusAncien="99999"
   END

   IF W_DatePlusAncien="99999" THEN
      W_Concat=W_Concat:"        "  ;* 8 espaces 
   END ELSE
      W_Temp=OCONV(W_DatePlusAncien,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END

   W_RadUrssaf = ENR_ELTSPARTEMP<14>
   IF W_RadUrssaf # "" THEN
      W_TempRadUrssaf=OCONV(W_RadUrssaf,"D4/")
      W_TempRadUrssaf=W_TempRadUrssaf[1,2]:W_TempRadUrssaf[4,2]:W_TempRadUrssaf[7,4]
      W_Concat=W_Concat:W_TempRadUrssaf
   END ELSE
      W_Concat=W_Concat:"        "  ;* 8 espaces
   END

   IF ENR_ELTSPARTEMP<5> # "" THEN
      W_Temp=OCONV(ENR_ELTSPARTEMP<5>,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END ELSE
      W_Concat=W_Concat:"        "  ;* 8 espaces
   END

   IF ENR_ELTSPARTEMP<6> # "" THEN
      W_Temp=OCONV(ENR_ELTSPARTEMP<6>,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END ELSE
      IF W_RadUrssaf # "" AND ENR_ELTSPARTEMP<5> # "" THEN
         W_Concat=W_Concat:W_TempRadUrssaf
         WRITEV W_RadUrssaf ON F.ELTSPARTEMP,W_CleAide,6
      END ELSE
         W_Concat=W_Concat:"        "  ;* 8 espaces
      END
   END

   IF ENR_ELTSPARTEMP<9> = "01" THEN
      W_Concat=W_Concat:"32"
   END ELSE
      W_Concat=W_Concat:"31"
   END

   IF ENR_ELTSPARTEMP<9> = "00" THEN
      W_Concat=W_Concat:"0"
   END ELSE
      W_Concat=W_Concat:"1"
   END

   W_Temp=""
   READ ENR_ELTSFACTAIDE FROM F.ELTSFACTAIDE,W_CleAide THEN

*LE RIB EST ECRIT DANS LE CAS SUIVANT

   IF ENR_ELTSPARTEMP<15> <> "" AND ENR_ELTSPARTEMP<6> = "" AND ENR_ELTSPARTEMP<7> = 0 THEN
	W_Temp=ENR_ELTSFACTAIDE<18>:ENR_ELTSFACTAIDE<19>:ENR_ELTSFACTAIDE<20>:ENR_ELTSFACTAIDE<21>
			
      IF W_Temp="" THEN
	    W_Temp=W_Temp "R%23"
      END
   END ELSE	
	W_Temp=W_Temp "R#23"	
   END
END ELSE
   W_Temp=W_Temp "R#23"	
END

 *     W_Temp=ENR_ELTSFACTAIDE<18>:ENR_ELTSFACTAIDE<19>:ENR_ELTSFACTAIDE<20>:ENR_ELTSFACTAIDE<21>
 *     IF W_Temp="" THEN
 *        W_Temp=W_Temp "R%23"
 *     END
 *  END ELSE
 *    W_Temp=W_Temp "R%23"
 *  END

   W_Concat=W_Concat:W_Temp
   
  * Salari
   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CleContrat[1,5] ELSE PRINT "CIVILAIDANT"
   W_Temp=""
   W_Temp=ENR_CIVILAIDANT<17>:ENR_CIVILAIDANT<18>
   IF W_Temp="" THEN
      W_TempBis="000000000000000"  ;*15 "0"
   END ELSE
      W_Len=LEN(W_Temp)
      W_TempBis=""
      FOR i=1 TO W_Len
         IF W_Temp[i,1] # " " THEN
            W_TempBis=W_TempBis:W_Temp[i,1]
         END
      NEXT i
   END
   W_Concat=W_Concat:W_TempBis:"05"

   W_Temp=W_CleContrat[1,5] "L#20"
   W_Concat=W_Concat:W_Temp

   W_Temp=ENR_CIVILAIDANT<1> "L#3"
   W_Concat=W_Concat:W_Temp

   W_Situation=ENR_CIVILAIDANT<21>
   W_Temp=" "
   BEGIN CASE
      CASE W_Situation="1" OR W_Situation="6"
         W_Temp="M"
      CASE W_Situation="2" OR W_Situation="5"
         W_Temp="C"
      CASE W_Situation="3"
         W_Temp="V"
      CASE W_Situation="4"
         W_Temp="D"
   END CASE
   W_Concat=W_Concat:W_Temp

   W_Temp=ENR_CIVILAIDANT<4>
   W_Temp=W_Temp[1,16]
   W_Temp=W_Temp "L#16"
   W_Concat=W_Concat:W_Temp   

   W_Temp=ENR_CIVILAIDANT<3>
   W_Temp=CONVERT("-"," ",W_Temp)
   W_Temp=W_Temp[1,10]
   W_Temp=W_Temp "L#10"
   W_Concat=W_Concat:W_Temp   

   W_Temp=ENR_CIVILAIDANT<2>
   W_Temp=W_Temp[1,16]
   W_Temp=W_Temp "L#16"
   W_Concat=W_Concat:W_Temp   

   W_TabAdr=ENR_CIVILAIDANT
   iAdr=5
   GOSUB 140
   IF W_Adr1 = "" THEN
      W_Temp=EXTRACT(ENR_CIVILAIDANT,9) "L#32"
      W_Concat=W_Concat:W_Temp
      W_Concat=W_Concat:SPACE(32)
   END ELSE
      W_Adr1=W_Adr1[1,32]
      W_Adr1=W_Adr1 "L#32"
      W_Concat=W_Concat:W_Adr1
      W_Temp=EXTRACT(ENR_CIVILAIDANT,9) "L#32"
      W_Concat=W_Concat:W_Temp
   END

   W_Temp=EXTRACT(ENR_CIVILAIDANT,10)
   IF W_Temp="" THEN
      W_Temp="00000"
   END
   W_Concat=W_Concat:W_Temp
  
   W_Temp=EXTRACT(ENR_CIVILAIDANT,11) "L#26"
   W_Concat=W_Concat:W_Temp

   IF ENR_CIVILAIDANT<26> # "" THEN
      W_Temp=OCONV(ENR_CIVILAIDANT<26>,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END ELSE
      W_Concat=W_Concat:"        "  ;* 8 espaces
   END

   W_Temp=OCONV(ENR_CONTRAT<7>,"D4/")
   W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]

   IF ENR_CONTRAT<8> # "" THEN
      W_Temp=OCONV(ENR_CONTRAT<8>,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END ELSE
      W_Concat=W_Concat:"        "  ;* 8 espaces
   END

   IF ENR_CIVILAIDANT<40> # "" THEN
      W_Temp=OCONV(ENR_CIVILAIDANT<40>,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END ELSE
      W_Concat=W_Concat:"        "  ;* 8 espaces
   END

   IF ENR_CIVILAIDANT<36> # "" THEN
      W_Temp=OCONV(ENR_CIVILAIDANT<36>,"D4/")
      W_Concat=W_Concat:W_Temp[1,2]:W_Temp[4,2]:W_Temp[7,4]
   END ELSE
      W_Concat=W_Concat:"        "  ;* 8 espaces
   END

****************

   W_BrutHoraire=0
   IF W_CumulBrut = 0 AND W_Heures = 0 THEN
	* ON NE DECLARE PAS CAR PAS DE BS
	PRINT "PASSE"
   END ELSE
		W_TempBrut=W_CumulBrut
		IF W_Heures = 0 THEN
			W_Heures=100
		END ELSE
			IF W_Heures < 0 THEN
				W_Heures=0
			END
		END
		W_BrutHoraire=INT(W_CumulBrut/W_Heures*100+1/2)/100
	
		
*        IF W_BrutHoraire < W_ValSmic AND W_BrutHoraire # 0 THEN
*           W_BrutHoraire = W_ValSmic
*           W_Heures=INT(W_TempBrut / W_ValSmic + 1/2)
*           IF W_Heures = 0 THEN
*              W_Heures=1
*           END
*        END

        IF W_BrutHoraire >= W_TauxHorPlaSecu THEN	
            W_Heures=INT(W_TempBrut/W_ValSmic)
			W_Heures=INT(W_Heures/100-1/2)
            W_BrutHoraire=INT(W_TempBrut/W_Heures+1/2)		
        END ELSE
			W_Heures=INT(W_Heures/100+1/2)
			W_BrutHoraire=W_BrutHoraire * 100
		END
   END
   
********************   
   
*   W_Heures=INT(W_Heures/100+1/2)

   W_CumulHeures=W_CumulHeures+W_Heures
   W_Heures=W_Heures "R%4"
   W_Concat=W_Concat:W_Heures

   W_Concat=W_Concat:"00000"

   IF ENR_CONTRAT<30>="B" THEN
      W_Concat=W_Concat:"R"      
   END ELSE
      W_Concat=W_Concat:"F"
   END

   W_CotiIrcem=W_CotiIrcem "R%6"
   W_Concat=W_Concat:W_CotiIrcem

   IF W_PrevExiste="VRAI" THEN
      IF W_RequetePrev<k,8>="" THEN
         W_RequetePrev=REPLACE(W_RequetePrev,k,8;0)
      END
	IF COUNT(W_CotiIrcem,"-") # 0 THEN
		W_CotiIrcem = INT(FIELD(W_CotiIrcem,"-",2)) * -1
	END
      W_RequetePrev=REPLACE(W_RequetePrev,k,8;W_RequetePrev<k,8>+W_CotiIrcem)
   END
   W_CumulCotiIrcem=W_CumulCotiIrcem+W_CotiIrcem
   IF ENR_ELTSPARTEMP<5> # "" THEN
		W_CotiIrcem=W_CotiIrcem "R%6"
	END ELSE
		W_CotiIrcem="000000"
   END

   W_Temp=""
   READ ENR_RIBAIDANT FROM F.RIBAIDANT,W_CleContrat[1,5] THEN
      W_Temp=ENR_RIBAIDANT<3>:ENR_RIBAIDANT<4>:ENR_RIBAIDANT<5>:ENR_RIBAIDANT<6>
   END
   W_Temp=W_Temp "R%23"
   W_Concat=W_Concat:W_Temp

   * W_Brut=INT(W_Brut*100+1/2)

   IF ENR_ELTSPARTEMP<9> = "00" THEN
      IF ENR_CONTRAT<30>="B" THEN
          W_Concat=W_Concat:"400"
      END ELSE
          W_Concat=W_Concat:"408"
      END
   END ELSE
      IF ENR_CONTRAT<30>="B" THEN
          W_Concat=W_Concat:"410"
      END ELSE
          W_Concat=W_Concat:"418"
      END
   END

   W_Temp=W_BrutHoraire "R%5"
   W_Concat=W_Concat:W_Temp

   IF ENR_CONTRAT<31>=1 THEN
       W_Concat=W_Concat:"1"
   END ELSE
       W_Concat=W_Concat:" "
   END    
   
   W_Concat=W_Concat:SPACE(30)

IF W_CotiIrcem # 0 OR W_Heures # 0 OR W_BrutHoraire # 0 THEN
   ENR_PREVOYANCE=REPLACE(ENR_PREVOYANCE,LigneFic;W_Concat)
   LigneFic=LigneFic+1
END

RETURN        

******************************************
* RECAPITULATIF
120 * Identifiant

    W_Concat=W_Identi

    LigneFic=LigneFic "R%6"
    W_Concat=W_Concat:LigneFic

   * Enregistrement
    W_Concat=W_Concat:"3021"

   * Recapitulatif
    LigneFic=LigneFic "R%8"
    W_Concat=W_Concat:LigneFic

    W_CumulHeures=W_CumulHeures "R%12"
    W_Concat=W_Concat:W_CumulHeures

    W_CumulCotiIrcem=W_CumulCotiIrcem "R%14"
    W_Concat=W_Concat:W_CumulCotiIrcem
    
    W_CumulBrutHoraireExo=W_CumulBrutHoraireExo "R%14"
    W_Concat=W_Concat:W_CumulBrutHoraireExo

    W_CumulBrutHoraireNonExo=W_CumulBrutHoraireNonExo "R%14"
    W_Concat=W_Concat:W_CumulBrutHoraireNonExo

    W_Concat=W_Concat:SPACE(516)

    ENR_PREVOYANCE=REPLACE(ENR_PREVOYANCE,LigneFic;W_Concat)

RETURN

**************************************************
* Lectures DetailCalcul
130 W_DebPeriode="" 
   W_FinPeriode=""
   W_DebContrat=EXTRACT(ENR_CONTRAT,7)
   W_FinContrat=EXTRACT(ENR_CONTRAT,8)
   W_CleDetailCalcul=""

   IF W_DatDebTri > W_DebContrat THEN
      W_DebPeriode = OCONV(W_DatDebTri,"D4/")
      W_DebPeriode=W_DebPeriode[4,2]
   END ELSE
      W_DebPeriode = OCONV(W_DebContrat,"D4/")
      W_DebPeriode=W_DebPeriode[4,2]
   END
   IF W_FinContrat # "" THEN
      IF W_DatFinTri > W_FinContrat THEN
         W_FinPeriode = OCONV(W_FinContrat,"D4/")
         W_FinPeriode = W_FinPeriode[4,2]
      END ELSE
         W_FinPeriode = OCONV(W_DatFinTri,"D4/")
         W_FinPeriode = W_FinPeriode[4,2]
      END
   END ELSE

      W_FinPeriode = OCONV(W_DatFinTri,"D4/")
      W_FinPeriode = W_FinPeriode[4,2]
   END

   W_Heures=0
   W_Brut=0
   W_CotiIrcem=0
   W_CumulBrut=0

   FOR j = W_DebPeriode TO W_FinPeriode
       W_CleDetailCalcul=j "R(%2)"
	 W_DateBulletin = ICONV("01/":W_CleDetailCalcul:"/":W_AnneeTrimestre,"D4/")
       W_CleDetailCalcul=W_CleContrat:W_AnneeTrimestre:W_CleDetailCalcul

       READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CleDetailCalcul THEN

          W_Heures=W_Heures+EXTRACT(ENR_DETAILCALCUL,6)
          IF EXTRACT(ENR_DETAILCALCUL,30)# "" AND EXTRACT(ENR_DETAILCALCUL,30)# 0 THEN
             W_Brut=EXTRACT(ENR_DETAILCALCUL,30)
          END ELSE
             W_Brut=EXTRACT(ENR_DETAILCALCUL,7)
          END
	    IF W_DateBulletin < W_DatePassageEuro THEN
          	W_Brut = INT(W_Brut / 6.55957 + 1/2)
	    END
	    W_CumulBrut=W_CumulBrut+W_Brut
		
          IF W_ClePrev # "" AND W_PrevExiste="VRAI" THEN
             i=1
             LOOP
             WHILE W_RequetePrev<k,5,i> # "" DO
                l=1
                W_Trouve="FAUX"
		    LOOP
                WHILE ENR_DETAILCALCUL<8,l> # "" AND W_Trouve="FAUX" DO

                   IF ENR_DETAILCALCUL<8,l> = W_RequetePrev<k,5,i> THEN
                      W_Trouve="VRAI"
					  IF W_DateBulletin < W_DatePassageEuro THEN
						* Rq : on n'crit pas DETAILCALCUL
						ENR_DETAILCALCUL<11,l> = INT(ENR_DETAILCALCUL<11,l>/6.55957 - 1/2)
						ENR_DETAILCALCUL<14,l> = INT(ENR_DETAILCALCUL<14,l>/6.55957 + 1/2)
					  END
					  
                      READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,l> THEN
                           IF ENR_RUBCHARGE<10> # 0 AND ENR_RUBCHARGE<10> # "" THEN
                              W_CotiIrcem=W_CotiIrcem - INT(ENR_DETAILCALCUL<11,l>)
                           END
                           IF ENR_RUBCHARGE<14> # 0 AND ENR_RUBCHARGE<14> # "" THEN
                              W_CotiIrcem=W_CotiIrcem + INT(ENR_DETAILCALCUL<14,l>)
                           END
						   
                      END ELSE
                         W_CotiIrcem=W_CotiIrcem - INT(ENR_DETAILCALCUL<11,l>) + INT(ENR_DETAILCALCUL<14,l>)
                      END
                   END
                   l=l+1
                REPEAT
                i=i+1
             REPEAT
             IF W_Trouve="VRAI" THEN
                IF ENR_ELTSPARTEMP<9> = "00" THEN
                   IF W_RequetePrev<k,7>="" THEN
                      W_RequetePrev=REPLACE(W_RequetePrev,k,7;0)
                   END
                   W_RequetePrev=REPLACE(W_RequetePrev,k,7;W_RequetePrev<k,7> + W_Brut)
                END ELSE
                   IF W_RequetePrev<k,6>="" THEN
                      W_RequetePrev=REPLACE(W_RequetePrev,k,6;0)
                   END
                   W_RequetePrev=REPLACE(W_RequetePrev,k,6;W_RequetePrev<k,6> + W_Brut)
                END
             END
          END
          IF ENR_ELTSPARTEMP<9> = "00" THEN
             W_CumulBrutHoraireNonExo=W_CumulBrutHoraireNonExo+W_Brut
          END ELSE
             W_CumulBrutHoraireExo=W_CumulBrutHoraireExo+W_Brut
          END
       END

   NEXT j

   
RETURN

**************************************************
* Mise en forme Adresse1
140
  W_Adr1=""
  IF W_TabAdr<iAdr> # "" THEN
     W_Adr1=W_TabAdr<iAdr>:" "
  END
  IF W_TabAdr<iAdr+1> # "" THEN
     W_Adr1=W_Adr1:W_TabAdr<iAdr+1>:" "
  END
  IF W_TabAdr<iAdr+2> # "" THEN
     W_Adr1=W_Adr1:W_TabAdr<iAdr+2>:" "
  END
  IF W_TabAdr<iAdr+3> # "" THEN
     W_Adr1=W_Adr1:W_TabAdr<iAdr+3>
  END

RETURN
