************
* IDENTIFICATION DES AIDES A DOMICILE AVEC A LA FOIS
* BASE EXO ET BASE NON EXO AUPRES DE L'URSSAF
************
EXECUTE 'DATE.FORMAT'
PROCREAD VARIABLES ELSE STOP
MODULE=FIELD(VARIABLES," ",2)
IF MODULE="PAIE" OR MODULE="PAIEAM" THEN NULL ELSE STOP
OPEN "","VOC" TO F.VOC ELSE STOP
ENRVOC=""
ENRVOC=REPLACE(ENRVOC,1;"F")
CHEMIN="D:\TRANSFERT\":MODULE
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\FIPAY")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_FIPAY")
WRITE ENRVOC ON F.VOC,"FIPAY"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\CH.URSSAF")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_CH.URSSAF")
WRITE ENRVOC ON F.VOC,"CH.URSSAF"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\ETAT-PAIE")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_ETAT-PAIE")
WRITE ENRVOC ON F.VOC,"ETAT-PAIE"

OPEN "DICT","CH.URSSAF" TO F.CHURSSAF ELSE STOP
ENREG=""
ENREG=REPLACE(ENREG,1;'V')
ENREG=REPLACE(ENREG,2;'OCONV(@ID, "T6,4")')
ENREG=REPLACE(ENREG,4;'Periode')
ENREG=REPLACE(ENREG,5;'4L')
ENREG=REPLACE(ENREG,6;'S')
WRITE ENREG ON F.CHURSSAF,"PERIODE"

OPEN "","PARAMASSO" TO F.PARAMASSO ELSE STOP
READ ENRPARAMASSO FROM F.PARAMASSO,"1" ELSE STOP
I=1
PRESENCEMODULE=0
LOOP
 COMPTE=EXTRACT(ENRPARAMASSO,1,I)
 UNTIL COMPTE="" OR PRESENCEMODULE=1DO
  IF COMPTE=MODULE THEN
   PRESENCEMODULE=1
  END ELSE
   I=I+1
  END
REPEAT
IF PRESENCEMODULE=0 THEN STOP
CODEASSO=EXTRACT(ENRPARAMASSO,2,I)

OPEN "","CH.URSSAF" TO F.CHURSSAF ELSE STOP
OPEN "","FIPAY" TO F.FIPAY ELSE STOP
OPEN "","ETAT-PAIE" TO F.ETATPAIE ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP
OPEN "","ERREURSMIGR" TO F.ERREURSMIGR ELSE STOP

RUBEXOTOT="035"
RUBEXOPLAF="037"
RUBNONEXOTOT="038"
RUBNONEXOPLAF="036"
READ ENRERREURSMIGR FROM F.ERREURSMIGR,"1" ELSE ENRERREURSMIGR=""
ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;"PR1 TRANSEXOAAD")

READ ENRASSOCIATION FROM F.ASSOCIATION,CODEASSO ELSE ENRASSOCIATION=""
DECALAGEPAIE=EXTRACT(ENRASSOCIATION,25)

READ ENRETATPAIE FROM F.ETATPAIE,"1" ELSE ENRETATPAIE=""
PERIODECLOT=EXTRACT(ENRETATPAIE,1)

IF DECALAGEPAIE=0 THEN
   EXERCICE="20":PERIODECLOT[1,2]
   PERIODECLOTDECAL=PERIODECLOT[1,2]:"01"  
   EXECUTE 'TSELECT CH.URSSAF AVEC PERIODE <= "[':PERIODECLOT:'" AND AVEC PERIODE >= "[':PERIODECLOTDECAL:'"'
END ELSE
   IF PERIODECLOT[3,2]="12" THEN
    EXERCICE=PERIODECLOT[1,2]+1
    EXERCICE=EXERCICE "R(%2)"
    EXERCICE="20":EXERCICE
   END ELSE
    EXERCICE="20":PERIODECLOT[1,2]
   END   
   PERIODECLOTDECAL=PERIODECLOT[1,2]-1
   PERIODECLOTDECAL=PERIODECLOTDECAL "R(%2)"
   PERIODECLOTDECAL=PERIODECLOTDECAL:"12"
   EXECUTE 'TSELECT CH.URSSAF AVEC PERIODE <= "[':PERIODECLOT:' AND AVEC PERIODE >= "[':PERIODECLOTDECAL:'"'
END

CODE1=""
BASEEXO=0
BASENONEXO=0
10 READNEXT CLE ELSE
 GOSUB 100
 DELETE F.VOC,"FIPAY"
 DELETE F.VOC,"CH.URSSAF"
 WRITE ENRERREURSMIGR ON F.ERREURSMIGR,"1"
 STOP
END
CODE=CLE[1,5]
IF CODE1="" THEN CODE1=CODE
IF CODE#CODE1 THEN
 GOSUB 100
 CODE1=CODE
 BASEEXO=0
 BASENONEXO=0
END
READ ENR FROM F.CHURSSAF,CLE ELSE GOTO 10
IF EXTRACT(ENR,1,3)#0 THEN BASENONEXO=BASENONEXO+EXTRACT(ENR,1,3)
IF EXTRACT(ENR,1,6)#0 THEN BASEEXO=BASEEXO+EXTRACT(ENR,1,6)
GOTO 10
**********
100 READ ENRFIPAY FROM F.FIPAY,CODE1 ELSE ENRFIPAY=""
IF EXTRACT(ENRFIPAY,3)[6,1]="1" THEN RETURN
NOM=EXTRACT(ENRFIPAY,1)
NOM=NOM "L(#30)"
NOUVCODE=EXTRACT(ENRFIPAY,60)
TYPECONTRAT=EXTRACT(ENRFIPAY,43)
READ ENRHISTORCUMUL FROM F.HISTORCUMUL,NOUVCODE:EXERCICE:CODEASSO THEN
 D=1
 BASEEXOTOT=0
 INDEXOTOT=0
 BASEEXOPLAF=0
 INDEXOPLAF=0
 BASENONEXOTOT=0
 INDNONEXOTOT=0
 BASENONEXOPLAF=0
 INDNONEXOPLAF=0
 LOOP
  RUBCHARGE=EXTRACT(ENRHISTORCUMUL,15,D)
  BASE=EXTRACT(ENRHISTORCUMUL,16,D)
  UNTIL RUBCHARGE="" DO
   IF RUBCHARGE=RUBEXOTOT THEN
    BASEEXOTOT=BASE
    INDEXOTOT=D
   END 
   IF RUBCHARGE=RUBEXOPLAF THEN
    BASEEXOPLAF=BASE
    INDEXOPLAF=D
   END 
   IF RUBCHARGE=RUBNONEXOTOT THEN
    BASENONEXOTOT=BASE
    INDNONEXOTOT=D
   END 
   IF RUBCHARGE=RUBNONEXOPLAF THEN
    BASENONEXOPLAF=BASE
    INDNONEXOPLAF=D
   END
   D=D+1
 REPEAT
 IF BASEEXO=0 THEN
  IF BASENONEXO=0 THEN
   IF INDEXOTOT#0 THEN
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,15,INDEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,16,INDEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,17,INDEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,18,INDEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,19,INDEXOTOT)
   END
   IF INDEXOPLAF#0 THEN
    E=1
    LOOP
     RUBCHGSUPP=EXTRACT(ENRHISTORCUMUL,15,E)
     UNTIL RUBCHGSUPP=RUBEXOPLAF OR RUBCHGSUPP="" DO
      E=E+1
    REPEAT
    IF RUBCHGSUPP#"" THEN
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,15,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,16,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,17,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,18,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,19,E)
    END
   END
   IF INDNONEXOPLAF#0 THEN
    E=1
    LOOP
     RUBCHGSUPP=EXTRACT(ENRHISTORCUMUL,15,E)
     UNTIL RUBCHGSUPP=RUBNONEXOPLAF OR RUBCHGSUPP="" DO
      E=E+1
    REPEAT
    IF RUBCHGSUPP#"" THEN
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,15,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,16,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,17,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,18,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,19,E)
    END
   END
   IF INDNONEXOTOT#0 THEN
    E=1
    LOOP
     RUBCHGSUPP=EXTRACT(ENRHISTORCUMUL,15,E)
     UNTIL RUBCHGSUPP=RUBNONEXOTOT OR RUBCHGSUPP="" DO
      E=E+1
    REPEAT
    IF RUBCHGSUPP#"" THEN
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,15,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,16,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,17,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,18,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,19,E)
    END
   END
   WRITE ENRHISTORCUMUL ON F.HISTORCUMUL,NOUVCODE:EXERCICE:CODEASSO
  END ELSE
   IF INDNONEXOTOT#0 THEN
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,16,INDNONEXOTOT;BASENONEXO)
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,17,INDNONEXOTOT;BASENONEXO)
   END
   IF INDNONEXOPLAF#0 THEN
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,16,INDNONEXOPLAF;BASENONEXO)
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,17,INDNONEXOPLAF;BASENONEXO)
   END
   IF INDEXOTOT#0 THEN
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,15,INDEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,16,INDEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,17,INDEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,18,INDEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,19,INDEXOTOT)
   END
   IF INDEXOPLAF#0 THEN
    E=1
    LOOP
     RUBCHGSUPP=EXTRACT(ENRHISTORCUMUL,15,E)
     UNTIL RUBCHGSUPP=RUBEXOPLAF OR RUBCHGSUPP="" DO
      E=E+1
    REPEAT
    IF RUBCHGSUPP#"" THEN
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,15,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,16,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,17,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,18,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,19,E)
    END
   END
   WRITE ENRHISTORCUMUL ON F.HISTORCUMUL,NOUVCODE:EXERCICE:CODEASSO
  END
 END ELSE
  IF BASENONEXO=0 THEN
   IF INDEXOTOT#0 THEN
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,16,INDEXOTOT;BASEEXO)
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,17,INDEXOTOT;BASEEXO)
   END
   IF INDEXOPLAF#0 THEN
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,16,INDEXOPLAF;BASEEXO)
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,17,INDEXOPLAF;BASEEXO)
   END
   IF INDNONEXOTOT#0 THEN
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,15,INDNONEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,16,INDNONEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,17,INDNONEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,18,INDNONEXOTOT)
    ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,19,INDNONEXOTOT)
   END
   IF INDNONEXOPLAF#0 THEN
    E=1
    LOOP
     RUBCHGSUPP=EXTRACT(ENRHISTORCUMUL,15,E)
     UNTIL RUBCHGSUPP=RUBNONEXOPLAF OR RUBCHGSUPP="" DO
      E=E+1
    REPEAT
    IF RUBCHGSUPP#"" THEN
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,15,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,16,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,17,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,18,E)
     ENRHISTORCUMUL=DELETE(ENRHISTORCUMUL,19,E)
    END
   END
   WRITE ENRHISTORCUMUL ON F.HISTORCUMUL,NOUVCODE:EXERCICE:CODEASSO
  END ELSE
   IF INDEXOTOT#0 THEN
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,16,INDEXOTOT;BASEEXO)
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,17,INDEXOTOT;BASEEXO)
   END
   IF INDEXOPLAF#0 THEN
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,16,INDEXOPLAF;BASEEXO)
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,17,INDEXOPLAF;BASEEXO)
   END
   IF INDNONEXOTOT#0 THEN
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,16,INDNONEXOTOT;BASENONEXO)
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,17,INDNONEXOTOT;BASENONEXO)
   END
   IF INDNONEXOPLAF#0 THEN
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,16,INDNONEXOPLAF;BASENONEXO)
    ENRHISTORCUMUL=REPLACE(ENRHISTORCUMUL,17,INDNONEXOPLAF;BASENONEXO)
   END
   WRITE ENRHISTORCUMUL ON F.HISTORCUMUL,NOUVCODE:EXERCICE:CODEASSO
  END
 END
END ELSE
 LIBERREUR=NOM:"   pas prsent dans fichier HISTORCUMUL POUR CH.URSSAF"
 ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
END
RETURN
