**********************************************************
* 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...
**********************************************************

* 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 "","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 "","TABLES" TO F.TABLES ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP
*********************************************************

* Recuperation des arguments

PRINT "Asso (3N) : ":
INPUT W_CodeAsso

PRINT "Trimestre (AAAAT) : ":
INPUT W_CboTrimestre
W_AnneeTrimestre=W_CboTrimestre[1,4]
W_NumTrimestre=W_CboTrimestre[5,1]

PRINT "Contrat Prevoyance (2N) : ":
INPUT W_CodeContratsPrev

PRINT "Ircem obligatoire intgre (O/N) : ":
INPUT W_TraitIrcemOblig
IF W_TraitIrcemOblig ="O" THEN
   W_TraitIrcemOblig="1"
END ELSE
   W_TraitIrcemOblig="0"
END

PRINT "Arrondi autoris en centimes d'euro : ":
INPUT W_Arrondi

W_CumulBug=0
W_CumulBrutBug=0
W_CumulDiffBug=0

* 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=""
W_RequetePrev=""
W_RequeteAct=""
W_Concat=""
W_Ligne=1
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=""

* Initialisation des requetes
W_RequeteContrat=""

PRINTER ON

******************************************
* Programme principal
*
* Pose les bornes du trimestre
    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
 
    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

    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"

   GOSUB 10
   GOSUB 20
   GOSUB 30
   GOSUB 100

   o=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
      o=o+1
   REPEAT
   
   GOSUB 120

   * WRITE ENR_PREVOYANCE ON F.PREVOYANCE,W_CodeAsso:W_CodeContratsPrev            

* Ecriture du rapport d'execution

    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,1;W_CodeAsso)
    ENR_RAPPORTPREV=REPLACE(ENR_RAPPORTPREV,2;W_Ligne)
    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,"1"

PRINT "Difference cumul : ":W_CumulDiffBug
PRINT "Cumul des bruts   : ":W_CumulBug

STOP

******************************************
* Requete sur contrat
10 
   IF W_CodeContratsPrev # "" THEN
      IF W_TraitIrcemOblig="0" THEN
        W_Str = '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
        W_Str = '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
      W_Str = '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
   PRINT W_Str
   EXECUTE W_Str
   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

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

    W_Ligne=W_Ligne "R%6"
    W_Concat=W_Concat:W_Ligne

  * Enregistrement
    W_Concat=W_Concat:"1020"

  * 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:SPACE(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,W_Ligne;W_Concat)
    W_Ligne=W_Ligne+1

RETURN        

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

  * Identifiant
    W_Concat=W_Identi

    W_Ligne=W_Ligne "R%6"
    W_Concat=W_Concat:W_Ligne

  * Enregistrement
    W_Concat=W_Concat:"2020"

  * Contrat

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

    IF W_ClePrev # "" 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=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
      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=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_Bug=INT(W_CumulBrutBug * 621 /10000 + 1/2)

   W_CumulBug=W_CumulBug+W_Bug

   IF W_Bug + W_Arrondi < W_CotiIrcem OR W_Bug - W_Arrondi > W_CotiIrcem THEN
      PRINT "Nom Prenom Aidant : ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:"   ":W_CleContrat
      PRINT "Nom Prenom Aid   : ":ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
      PRINT "Bulletins       : ":W_TabBullErr
      PRINT "Cotisation taux   : ":W_Bug:"     ":"Cotisation bull : ":W_CotiIrcem
      W_DiffBug=W_Bug-W_CotiIrcem
      PRINT "Difference        : ":W_DiffBug
      W_CumulDiffBug=W_CumulDiffBug + W_DiffBug
	PRINT "Cumul des bruts   : ":W_CumulBrutBug
      PRINT "-------------------------------------------------------------------"
*      DEBUG
   END

   IF W_Heures # 0 THEN
      W_BrutHoraire=INT(W_CumulBrut/W_Heures*100+1/2)
   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
   W_CotiIrcem=W_CotiIrcem "R%6"

   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)

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

RETURN        

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

    W_Concat=W_Identi

    W_Ligne=W_Ligne "R%6"
    W_Concat=W_Concat:W_Ligne

   * Enregistrement
    W_Concat=W_Concat:"3010"

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

    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,W_Ligne;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
   W_CumulBrutBug=0
   W_TabBullErr=""
   FOR j = W_DebPeriode TO W_FinPeriode
       W_PassBug=0
       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
                      IF W_PassBug=0 THEN
                	       W_CumulBrutBug=W_CumulBrutBug+W_Brut
				 W_PassBug=1
                      END
                      W_TabBullErr<-1,1>=ENR_DETAILCALCUL<8,l>
                      W_TabBullErr<-1,2>=W_CleDetailCalcul
                      W_CotiIrcem=W_CotiIrcem - INT(ENR_DETAILCALCUL<11,l>) + INT(ENR_DETAILCALCUL<14,l>)
                   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
